使用大括号运行多个带有空格的命令

使用大括号运行多个带有空格的命令

我最近学习了如何使用大括号来运行多个命令,例如,我可以创建10这样的文件,

touch {1..10}.txt

或具有奇怪名称的文件,

touch {1..10..2}

我还可以重新启动多个进程,例如

systemctl restart app9-{server,client,test}

上面的命令将重新启动名为 、app9-serverapp9-client的服务app9-test

现在我有一个命令,里面有一个空格,

vagrant destroy app9
vagrant up app9
vagrant ssh app9

我如何使用大括号运行以上 3 个命令?

我试过,

vagrant {destroy app9,up app9,ssh app9}

vagrant {destroy,up,ssh} app9

但它们都没有真正起作用。

有人可以告诉我如何使用大括号运行这些命令吗?

答案1

在您的问题中使用大括号的情况下,您都不会运行多个命令。

touch {1..10}.txt

对 10 个文件运行一个命令:

touch 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt

命令

systemctl restart app9-{server,client,test}

仍然只是一个命令:

systemctl restart app9-server app9-client app9-test

大括号扩展用于在单个命令中执行一个或多个字符串的简单文本扩展。

您要执行的三个任务必须是三个单独的命令。如果您愿意,您可以循环执行此操作:

for cmd in destroy up ssh; do
    vagrant "$cmd" app9
done

答案2

尝试:

eval 'vagrant '{destroy,up,ssh}' app9;'

注意引号。

相关内容