$*
在外壳中是什么意思?
我有两个代码,run_command
和run_test
,它们的调用方式如下:
if [ -n "`echo ${GOAT_COMMANDS} | grep $1`" ]; then
run_command $*
else
run_test $*
fi
我想了解什么$*
意思,但是Google搜索对于搜索这类东西非常不利。
$*
是脚本或函数的所有参数,在空格上分为单独的参数。
如果您具有功能:
foo() {
for x in $*
do
echo $x
done
}
然后运行foo 1 "2 3 4" 5
将输出:
1
2
3
4
5
即,被引用的字符串"2 3 4"
将被分为三个单独的“单词”。
当你不希望分裂参数到这样的单独的单词,你可以使用$@
。如果使用相同的函数"$@"
代替$*
,它将输出:
1
2 3 4
5
也就是说,引用的字符串不会拆分为单独的单词。这就像明确列出所有位置参数:"$1" "$2" "$3" "$4" ...
。通常,这可能是您要使用的-单词拆分通常会导致难以跟踪的讨厌的错误。
在脚本的顶层(不是在函数内部),这些引用给脚本本身提供的参数。
您的示例正在调用此脚本或函数的所有参数之一run_command
或run_test
全部,并拆分为单独的单词。如果脚本按原样运行,script.sh "hello world" 2 3
那么它将具有运行效果:
run_command hello world 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句