[英]Shell script syntax error when trying to activate a virtualenv and execute a python script in it
我想要一個可以激活虛擬環境(在外殼中和通過cron)的腳本,然后使用該virtualenv中的所有參數運行傳遞的腳本。
這是prod.sh現在的內容:
#!/bin/bash
. $VE_DIR/Production_VE/bin/activate
python $0 "$@"
然后我嘗試一下:
hostname:~$prod.sh myscript.py -c arg1 -fu
我收到此錯誤:
File "/home/username/prod.sh", line 3
. $VE_DIR/Production_VE/bin/activate
^
SyntaxError: invalid syntax
我嘗試切換到源:
#!/bin/bash
source $VE_DIR/Production_VE/bin/activate
python $0 "$@"
錯誤發生了變化,但是現在:
File "/home/username/prod.sh", line 3
source $VE_DIR/Production_VE/bin/activate
^
SyntaxError: invalid syntax
對於其他情況,我希望能夠在CentOS 6.5 VPS和Mac OS上運行此腳本。
這幅畫怎么了?
謝謝!
在您的bash腳本中,$ 0是“ prod.sh”,不是python腳本。 更改
python $0 "$@"
至
python "$@"
我剛剛創建了一個與您相似的腳本,並且運行良好。 我認為這真的很奇怪,您為此添加了一個問題。 但是當我看着你的錯誤時:
File "/home/username/prod.sh", line 3
source $VE_DIR/Production_VE/bin/activate
^
SyntaxError: invalid syntax
它看起來確實像是Python錯誤,而不是bash錯誤。 您的錯誤是,當您這樣做時:
python $0 "$@"
您應該刪除$ 0,因為它包含bash腳本的路徑。
python "$@"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.