我试图以与$ @或$ *相同的方式将所有参数分配给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变量,使其工作方式与外部脚本相同?
非常感谢
答案 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