我有一些python脚本,由于各种原因,我有围绕它们的shell脚本包装:
#!/bin/sh
source env.sh
python $0.py $@
除非需要引用参数,否则这样可以正常工作。当然,在这种情况下,包装器会使用引号,并将未引用的版本提供给python脚本。所以,我的第一个问题是“我怎么能不去吃引号?”
但是,即使我反向删除引号,它也不起作用。我打印出我要打电话的整个命令:
source env.sh
echo "python $0.py $@"
python $0.py $@
如果我用foo \“a b c”调用它,它会输出 python foo.py“a b c” 但是,当foo.py被调用时,它仍然是GETS foo.py a b c
如果我只是复制并粘贴输出,并运行它,它运行正常。
有人能告诉我为什么实际执行会从脚本失败,但在命令行上成功吗?
感谢。
答案 0 :(得分:1)
你需要引用实际使用$@
参数,即
source env.sh
echo "python $0.py $@"
python $0.py "$@"
我希望这会有所帮助。