【发布时间】:2017-06-09 13:49:31
【问题描述】:
我想创建一个 bash 脚本,它有 3 个参数。但第二个必须是$*,因为我稍后需要这些行。其他两个参数(第一个和第三个)不需要这个。
for x in $* do
第一个和第二个参数没有问题,这个有效:
parameter1="$1"
shift
parameter2="$*"
但我需要最后的第三个参数和类似的东西
parameter1="$1"
parameter3="$3"
shift
parameter2="$*"
行不通。我最后的命令应该是这样的:
bash myscript parameter1 parameter2 parameter3
【问题讨论】:
-
你的意思是要第一个参数和最后一个参数,然后遍历中间的所有参数吗?
-
$*,就其本质而言,将所有剩余的参数捕获到一个字符串中。 全部。 -
(这也意味着你失去了
"one arg" "another arg"和one arg another arg或"one arg another arg"之间的区别——一般来说,$*的效果是不受欢迎的,你不应该把它用作你在这里)。 -
...也就是说:
for x in $*基本上总是错的。for x in "$@"是正确的选择。 -
顺便说一句,我不确定这里是否有足够的上下文来解释为什么您认为您需要
$*或"$@"。而不是myscript parameter1 parameter2 parameter3,为什么不用myscript parameter1 "parameter2" parameter3,而第二个使用"$2"?
标签: linux bash parameters