BASH程序中的Python文件测试行因语法错误而失败

时间:2014-01-22 17:34:07

标签: python bash

嘿伙计们,我正在尝试将一些PY集成到我的shell脚本中并运行 以下错误,我虽然引用应该引用我的变量,但它看起来 喜欢它没有按照我的预期行事,有人可以帮我解决这个问题吗?

#!/bin/bash
host='user@localhost' 
path='/home/user/file' 

python -c "return subprocess.call(['ssh', '$host', 'test -e ' + pipes.quote($path)]) == 0"

  File "<string>", line 1
    return subprocess.call(['ssh', "user@localhost", 'test -e ' + pipes.quote(/home/jdaniel/sent)]) == 0
                                                                                 ^
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:2)

python -c "return subprocess.call(['ssh', '$host', 'test -e ' + pipes.quote(\"$path\")]) == 0"

我会假设

作为旁边..为什么你不只是从bash调用ssh?通过这种方式使用python你有什么好处?使用import subprocess标志时,您不需要使用-c吗?

我会选择在python或bash中完成整个程序......但是将它们混合起来感觉有点傻(特别是考虑到你的python代码的作用)

答案 1 :(得分:1)

您需要更改此

pipes.quote($path)

pipes.quote('$path')

因为pipes.quote()需要一个字符串

我会说最好使用shell而不是python

#!/bin/bash
host='user@localhost' 
path='/home/user/file' 
ssh -q $host "test -e $path"