Answers:
$@
本质上将数组的每个元素都视为带引号的字符串-传递时没有扩展的机会。它还确保将每个单词视为一个单独的单词。此处的解释以及展示差异的测试脚本是:tldp.org/LDP/abs/html/internalvariables.html#APPREF
bash使用shift命令:
例如shifttest.sh:
#!/bin/bash
echo $1
shift
echo $1 $2
shifttest.sh 1 2 3产生
1
2 3
$1
不引号的情况下以形式转发参数"$1"
,则外壳程序将执行单词拆分,因此例如foo bar
将分别转发为foo
和bar
。
Bash支持子集参数(请参阅Subsets和substrings),因此您可以像这样选择要处理/传递的参数。
打开新文件并编辑它:vim r.sh
:
echo "params only 2 : ${@:2:1}"
echo "params 2 and 3 : ${@:2:2}"
echo "params all from 2: ${@:2:99}"
echo "params all from 2: ${@:2}"
运行:
$ chmod u+x r.sh
$ ./r.sh 1 2 3 4 5 6 7 8 9 10
结果是:
params only 2 : 2
params 2 and 3 : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10
params all from 2: 2 3 4 5 6 7 8 9 10