Bash解释器更改参数顺序

时间:2012-12-22 19:05:22

标签: bash arguments

我有bash脚本并尝试在其中运行命令

没关系

echo ${something:="zip -r -q $TAG -P $PASS $LOCPATH"}
>zip -r -q evolution -P evolution ~/.gconf/apps/evolution

那也没关系

zip -r -q evolution -P evolution ~/.gconf/apps/evolution

但是这里的顺序只有在传递值时才会被更改,并且添加了奇怪的内容。 -i

zip -r -q $TAG -P $PASS $LOCPATH
>zip error: Nothing to do! (try: zip -r -q -P evolution evolution . -i ~/.gconf/apps/evolution

感谢您的任何建议。

2 个答案:

答案 0 :(得分:3)

BASH FAQ#50:"I'm trying to put a command in a variable, but the complex cases always fail!"

something=(zip -r -q "$TAG" -P "$PASS" "$LOCPATH")
"${something[@]}"

答案 1 :(得分:0)

尝试type zip,似乎对某些内容有别名。

可能会将zip的完整路径覆盖此内容,例如:

/usr/bin/zip