Unix “$@” 作为参数

Unix “$@” 作为参数

假设我有一些命令:

somecommand "$@"

$@ 的意义何在?这肯定是一些我不熟悉的 unix 技巧。不幸的是,由于它全是标点符号,我也无法用 Google 搜索它。

答案1

它是当前 shell 脚本或函数的参数,单独引用。

man bash说:

@ 扩展为位置参数,从 1 开始。当扩展发生在双引号内时,每个参数都会扩展为一个单独的单词。也就是说,"$@"相当于"$1" "$2" ...


给出以下脚本:

#!/usr/bin/env bash

function all_args {
    # repeat until there are no more arguments
    while [ $# -gt 0 ] ; do
        # print first argument to the function
        echo $1
        # remove first argument, shifting the others 1 position to the left
        shift
    done
}

echo "Quoted:"
all_args "$@"
echo "Unquoted:"
all_args $@

执行时会发生这种情况:

$ ./demo.sh foo bar "baz qux"
Quoted:
foo
bar
baz qux
Unquoted:
foo
bar
baz
qux

相关内容