我正在尝试执行以下操作:
if ps aux | grep "[t]ransporter_pulldown.py" > /dev/null
then
echo "Script is already running. Skipping"
else
exec "sudo STAGE=production $DIR/transporter_pulldown.py" # this line errors
fi
$ sudo STAGE=production $DIR/transporter_pulldown.py
在命令行上工作,但在bash脚本中,它给了我:
./transporter_pulldown.sh: line 9:
exec: /Users/david/Desktop/Avails/scripts/STAGE=production
/Users/david/Desktop/Avails/scripts/transporter_pulldown.py:
cannot execute: No such file or directory
这里正确的语法是什么?
sudo不是命令解释器,因此它试图将第一个参数作为命令执行。
而是尝试以下方法:
exec sudo bash -c "STAGE=production $DIR/transporter_pulldown.py"
这将创建使用新bash
过程来解释变量并执行python
脚本的过程。还要注意,这$DIR
将由您键入的shell而不是正在执行的shell解释。要强制在新bash
流程中解释它,请使用单引号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句