我正在设置一个 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 ...
两条线。解决方案是什么?应该清楚的是,在您手动执行之前,这两个命令都不会终止。不需要为这两个命令打开一个新的终端,一个可以在当前终端中执行。
可以简化:
此外,尝试在脚本中指定完整路径。
frontend
和backend
我在当前目录中创建的文件夹,但最好指定它们的完整路径。这是一个示例输出,因为我没有您的服务。你应该通过你的命令来改变
echo frontend
andecho backend
,这意味着通过/usr/bin/ng build
and/usr/bin/symfony server:start
。但在它whereis ng && whereis symfony
找到你的命令的完整路径之前。您的脚本可能如下所示:
首先尝试不使用
&
. 但如果第二个命令等待第一个命令执行,则使用&
将第一个命令发送到后台。此外,如果您需要在执行某些命令之前等待,请使用sllep X
, whereX
秒数。