argv+=arg # append one argument to the end
argv+=(arg2 arg3) # append several arguments
argv[1,0]=(arg1 arg2) # insert in front
argv[3,0]=(x) # insert before the 3rd element
2+=(x) # same as above (insert after the 2nd)
2+=x # append x to the second argument (not to confuse with
# the above).
argv[2,5]=(y) # replace 4 elements 2 to 5 with one y argument
argv[3,-1]=() # truncate
1=() # same as "shift"
在任何 POSIX shell 中,
将添加
value
到位置参数列表的末尾(它实际上会用新的更长的列表替换列表),并且将在开头添加它(从技术上讲,这与 a 的相反,
shift
因为它shift
删除了第一个元素)。这适用于zsh
.--
用于保护以下值不被意外解释为选项,以防它们以-
.特殊变量
$@
几乎被专门使用,"$@"
因为它会扩展为每个单独引用的位置参数的值。该表达式"$@ somethingelse"
将扩展为单独引用的位置参数列表,<space>somethingelse
并附加到它们的最后一个。要将位置参数的值用作由空格分隔的单个字符串
$IFS
(或任何可能的第一个字符),请使用"$*"
("$* somethingelse"
很好地定义为单个字符串)。然而,这不是您在这种情况下想要做的,因为它会将您的值列表折叠为一个值。zsh
具体来说,除了@Kusalananda显示的标准set -- "$@" ...
之外,位置参数也可以通过$argv
数组获得(如在 csh 中),因此您还可以执行以下操作: