我正在设置一个 repo,我想制作一个 shell 脚本,该脚本将运行两个运行后端和构建前端的命令。到目前为止,我所拥有的是这样的:
#!/bin/sh
sh -e "sh -c 'cd frontend && ng build'"
sh -e "sh -c 'cd backend && symfony server:start'"
但是,当我尝试运行它时,我会返回sh: 0: Can't open sh -c ...
两条线。解决这个问题的方法是什么?应该清楚的是,除非您手动执行,否则这两个命令都不会终止。不需要为这两个命令都打开一个新终端,一个可以在当前终端中执行。
可以简化为:
$ ./twocmds.sh
frontend
backend
$ cat ./twocmds.sh
#!/bin/sh
/bin/sh -ec 'cd frontend && echo frontend'
/bin/sh -ec 'cd backend && echo backend'
此外,尝试在脚本中指定完整路径。frontend
和backend
我在当前目录中创建的文件夹,但最好指定它们的完整路径。
这是一个示例输出,因为我没有你的服务。你应该通过你的命令改变echo frontend
和echo backend
,这意味着通过/usr/bin/ng build
和/usr/bin/symfony server:start
。但在它做之前whereis ng && whereis symfony
找出你的命令的完整路径。
您的脚本可能如下所示:
#!/bin/sh
/bin/sh -ec 'cd frontend && /usr/bin/ng build &'
/bin/sh -ec 'cd backend && /usr/bin/symfony server:start'
首先尝试不使用&
. 但是如果第二个命令等待第一个命令执行,则使用&
将第一个命令发送到后台。此外,如果您需要在执行某些命令之前等待,请使用sllep X
, whereX
秒数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句