我尝试在bash脚本中启动另一个应用程序,但应用程序似乎退出了我的脚本,因此行exec $HOME/bin/sync-iosbeta;
没有被执行。我试图将它放在if之外。
if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then
echo "Wil sync"
exec $HOME/bin/sync-iosbeta;
fi
echo "This text does not get printed either..";
我还尝试使用open
启动应用,但即使设置了--args
,我也会遇到传递参数的问题。
我在Mac OS上运行。
答案 0 :(得分:2)
来自 exec 手册:
如果指定了command,它将替换shell。没有创建新流程。
只需删除exec和“;”:
if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then
echo "Wil sync"
$HOME/bin/sync-iosbeta
fi
echo "This text does not get printed either..";
如果 sync-iosbeta 未执行,则可能是它没有正确的权限。尝试:
if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then
echo "Wil sync"
/bin/sh $HOME/bin/sync-iosbeta
fi
echo "This text does not get printed either..";
答案 1 :(得分:1)
这是执行官的全部观点。 man bash
:如果指定了command,它将替换shell。
只需删除exec
。