我正在准备 LPIC1,考试 102。这个问题出现在我面前,我完全茫然了。当我第一次参加测验时我就知道这一点,现在一个半月过去了,这一切在我的脑海中都变得模糊了。
什么是
输出?function a { echo $1; } ; a a b c
A、a
B.abc
出租车
D.aabc
我尝试通过创建一个名为“script”的文件来重现此功能:
function a { echo $1;
};
a a b c
保存它,授予它执行权限,然后尝试一下:
$ bash script
a
$
所以正确答案是A,但是为什么呢?需要加个;
after吗$1
?第二个是做什么;
用的?有人可以解释一下这个脚本的语法吗?
答案1
这些命令应该在命令行上执行,例如:
function a { echo $1; } ; a a b c
第二个分号将命令列表分为
function a { echo $1; }
和
a a b c
第一个命令将创建一个名为“a”的函数,它将回显第一个位置参数。函数内的命令列表需要
后面的分号echo $1
来结束,因为没有换行符可以这样做。
(另请参见:man bash
-> 复合命令 -> { list; } )第二个命令
a a b c
将调用该函数(拳头 a)并将“ab c”作为位置参数传递给该函数。
由于该函数仅回显第一个位置参数,因此正确答案是“A.”。
答案2
a a b c
翻译为command arg1 arg2 arg3
您要做的就是定义一个名为的函数a
,该函数返回第一个参数 ( $1
),该参数恰好是“a”。
分号是关于如何在相应的 shell 中使用大括号对命令进行分组的问题:
{ commandA ; commandB ; commandC ; ... ; commandN ; }