使用Python输出调用程序

时间:2015-04-04 23:50:42

标签: python bash output

我想用python生成的参数调用c程序display_output,但是我不确定如何制定语法。我试过这个

./display_output (python -c "print 'A' * 20")

但我得到

bash: syntax error near unexpected token `python'

我认为这与我原来的问题一致,可以帮助我解决这个问题。我可以找到尝试将python cmd行输出作为bash命令运行的唯一方法是将| bash附加到命令中。但是,有更好的方法吗?

(python -c "print 'ls'") | bash

我显然不知道我在Bash周围的方式,但我确信有更合适的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

当bash在命令所在的位置看到一个打开的括号时,它将启动一个子shell来运行所附的命令。你现在拥有它们的地方不是命令可以去的地方。你想要的是command substitution

./display_output $(python -c "print 'A' * 20") 
# ...............^

如果生成的任何参数包含空格,则会遇到麻烦(显然不是这个玩具示例的情况。

要在bash中生成一个20" A"的字符串,你会写:

a20=$(printf "%20s" "")    # generate a string of 20 spaces   
# or, the less readable but more efficient: printf -v a20 "%20s" ""
a20=${a20// /A}            # replace all spaces with A's

最后一行是shell parameter expansion

中的模式替换