$ *在shell中是什么意思

Zhenxiao Hao

$*在外壳什么意思?

我有两个代码,run_commandrun_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_commandrun_test全部,并拆分为单独的单词。如果脚本按原样运行,script.sh "hello world" 2 3那么它将具有运行效果:

run_command hello world 2 3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章