【发布时间】:2014-09-05 01:09:49
【问题描述】:
我正在编写一个 bash 脚本,它将
- 根据传递的第一个参数表现不同(目前没有问题)
- 将其余参数传递给命令(目前没有问题)
- 如果参数包含字符串,则表现不同
看起来像:
[[ "${1}" = "-h" || "${1}" = "--help" ]] && echo -e "somehelp"
[[ "${1}" = "echo" ]] && echo ${*:2}
[[ "${1}" = "emerge" ]] && emerge -uDN ${*:2}
some-magic-here
现在,如果我这样做了
myscript emerge -a whatever whatever2 --option
它会运行
emerge -uDN -a whatever whatever2 --option
但是,万一“whatever”是一个包含*的字符串,比如
myscript emerge -uDN -a whatever/* whatever2 --option
我希望它运行
emerge -uDN -a $(eix -u --only-names whatever/*) whatever2 --option
相反。有什么建议吗?
【问题讨论】:
-
这是不可能的,因为 Bash 会在
*传递给您的脚本之前对其进行扩展。除非你在引号中写"whatever/*" -
有可能,您只需引用您的输入。 IE。
myscript emerge -uDN -a 'whatever/*' whatever2 --option或关闭 globbing。