模式扩展以运行命令

Jea*_*ado 2 bash brace-expansion

知道我能够运行echomv扩展这样的模式:echo {0..9}{A..Z}.我很想知道是否有办法执行相同操作但运行命令?

docker-compose {stop,rm,up -d}
Run Code Online (Sandbox Code Playgroud)

上面的例子不起作用,但有一些方法可以实现(分别运行stop,rm和up)?

fed*_*qui 5

不是你提到它的方式.

支撑膨胀发生在任何其他扩张之前.这意味着,当你说echo {0,1}{a,b},Bash在完成任何其他步骤之前扩展大括号.这样一来,就变成echo 0a 0b 1a 1b,一个命令.

当你提到时docker-compose {stop,rm,up -d},请注意这将扩展为单个命令:docker-compose stop rm up -d,这似乎没有效果.

看起来您想要运行三个不同的命令:

docker-compose stop
docker-compose rm
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

为此,您可能希望使用循环(注意"up -d"被引用以便将其视为单个参数):

for argument in stop rm "up -d"
do
    docker-compose $argument
done
Run Code Online (Sandbox Code Playgroud)

  • 还要注意``$ parameter"`几乎肯定是*错误的*因为docker会收到一个参数`up -d` ...只是去掉引号. (2认同)