我最近学习了如何使用大括号来运行多个命令,例如,我可以创建10
这样的文件,
touch {1..10}.txt
或具有奇怪名称的文件,
touch {1..10..2}
我还可以重新启动多个进程,例如
systemctl restart app9-{server,client,test}
上面的命令将重新启动名为 、app9-server
和app9-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;'
注意引号。