参数的外壳扩展?

参数的外壳扩展?

例如:

mkdir ~/{1,2,3}

创建目录~/1~/2~/3。它相当于:

mkdir ~/1
mkdir ~/2
mrdir ~/3

但是,在以下情况下使用相同的语法CMD < argument >

brew {install, update, doctor}

...对于 shell 的解释来说是无稽之谈。这并不意味着:

brew install
brew update
brew doctor

制作快速脚本很容易,但是必有在 bash 中使用扩展或替换是一种更简单的方法。我缺少什么?

运行Bash 3.2.57(1)-releaseOS X 10.10.2

答案1

xargs似乎是你想要的:

echo install update doctor | xargs -n1 brew

答案2

转义第一个空格并删除其他空格:

$ printf "'%s'\n" brew\ {install,update,doctor}
'brew install'
'brew update'
'brew doctor'

如果brew是一个命令,只需编写(也不带空格):

brew {install,update,doctor}

就像你的 mkdir 示例一样:

mkdir {install,update,doctor}

您不需要外部流程或管道即可做到这一点;一切都可以在你的 shell 中完成bash

答案3

怎么样(注意反斜杠,非常重要):

echo brew\ {install,update,doctor}\;| bash

第一个模式( 的参数echo)将这样扩展:

echo brew install; brew update; brew doctor;

然后回显,产生以下输出:

brew install; brew update; brew doctor;

我们将其传送到一个新的 bash 实例。

相关内容