Shell脚本。将$ @或$ *分配给变量

时间:2014-01-08 10:30:39

标签: shell parameters

我试图以与$ @或$ *相同的方式将所有参数分配给shell脚本。可能更容易用我正在尝试做的一个例子来解释

if [ $# == 0 ]; then
  FIELDS="$($findfields)"
else
  FIELDS=$@
fi
#Show the fields
for field in "$FIELDS"
  do
    echo "$field"
  done

当我运行没有参数的脚本时,会调用一个单独的脚本并且输出是预期的

field1
field2
field3

当我使用参数

运行脚本时
$mysrcipt.sh field1 field2 field3

我得到以下

field1 field2 field3

如何将$ @分配给FIELDS变量,使其工作方式与外部脚本相同?

非常感谢

1 个答案:

答案 0 :(得分:1)

要存储值以使它们形成数组,请执行以下操作:

FIELDS=( "$@" )

测试

$ cat a

if [ $# == 0 ]; then
  FIELDS="$($findfields)"
else
  FIELDS=( "$@" )
fi

#Show the fields
for field in "${FIELDS[@]}"
  do
    echo "$field"
  done

$ ./a a b c
a
b
c

$ ./a "a b c"
a  b c