我正在尝试执行以下操作:
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
这里的语法是什么?
答案 0 :(得分:2)
sudo并不是一个命令解释器,因此它试图将第一个参数作为命令执行。
而是试试这个:
exec sudo bash -c "STAGE=production $DIR/transporter_pulldown.py"
这会创建一个新的bash
进程来解释变量并执行python
脚本。另请注意,$DIR
将由您正在键入的shell而不是正在执行的shell进行解释。要强制在新的bash
进程中解释它,请使用单引号。