简体   繁体   English

Bash解释器更改参数顺序

[英]Bash interpreter change arguments order

I have bash script and try run command inside it 我有bash脚本并尝试在其中运行命令

That's ok 没关系

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

That's ok too 也可以

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

But here order have been changed only when passed values and added strange . 但是这里的顺序只有在传递值时才改变,并且增加了怪异的。 -i -一世

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

Thanks for any advice. 感谢您的任何建议。

BASH FAQ entry #50: "I'm trying to put a command in a variable, but the complex cases always fail!" BASH常见问题解答条目50: “我试图将命令放入变量中,但复杂的情况总是失败!”

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

Try doing type zip , seems it's aliased to something. 尝试type zip ,似乎是别名。

Maybe put the full path of zip to override this ,something like : 也许使用zip的完整路径来覆盖它,例如:

/usr/bin/zip

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM