在 bash 中"$*"有哪些用例?



来自bash man页面:

"$*"等于 "$1c$2c...",其中 cIFS变量值的第一个字符。

"$@"等于 "$1" "$2" ...

"$@"无法代替"$*"的任何示例?

我最喜欢的用途是更换场分隔符。

$ set -- 'My word' but this is a bad 'example!'
$ IFS=,
$ echo "$*"
My word,but,this,is,a,bad,example!

还有其他替换定界符的方法,但是IFS和"$*"通常是最简单的。

这些是完全不同的工具,应在完全不同的情况下使用。关于另一个代替另一个没有合理的问题,因为在任何给定的情况下,只有一个是正确的。

"$*"尝试从参数列表中形成单个字符串参数时最适用 - 主要用于登录(但不是参数之间的划分很重要的情况;然后, "$@"适用于诸如 print '%q '之类的东西)。"$@"在...嗯,任何其他情况下都有用。

示例:

die() {
    local stat=$1; shift
    log "ERROR: $*"
    exit $stat
}

使用"$*"格式化以将其传递给log的字符串仅使用单个ARGV条目,从而允许将来将其他可选的位置参数添加到log的使用中。

$*将所有参数扩展为一个单词,其中ifs在参数之间。

$@将所有参数作为列表展开。

尝试名为list.sh的文件中的下一个代码:

#!/bin/bash
echo "using '$*'"
for i in "$*"
do
    echo $i
done
echo "using '$@'"
for i in "$@"
do
    echo $i
done

使用它:

./list.sh apple pear kiwi

相关内容

  • 没有找到相关文章

最新更新