实际情况有点复杂,但我遇到的问题是我在 eval 命令中有一个 echo 命令。像这样:
$ eval echo 'keep my spacing'
keep my spacing
$ echo 'keep my spacing'
keep my spacing
我想知道如何阻止 eval 剥离我的间距,以便第一个命令打印出与第二个命令相同的消息......
以下是一个更接近实际情况的例子:
$ eval `python -c 'print "echo \"keep my spacing\""'`
keep my spacing
答案 0 :(得分:1)
eval echo "'keep my spacing'"
答案 1 :(得分:1)
eval "echo 'keep my spacing'"
keep my spacing
如果这对您不起作用,请详细说明实际情况。
答案 2 :(得分:1)
这不是eval
的错误:
`python -c 'print "echo \"keep my spacing\""'`
打印
"keep my spacing"
相反,你可以这样做:
python -c 'print "echo \"keep my spacing\""' | bash
打印
keep my spacing
答案 3 :(得分:1)
问题(在python示例中)是命令替换(反引号表达式)不受引号保护。要修复,请在其周围加上双引号(并使引号更好地嵌套,使用$()
代替反引号):
eval "$(python -c 'print "echo \"keep my spacing\""')"
答案 4 :(得分:0)
或考虑printf -v
答案 5 :(得分:0)
$ . <(python -c 'print "echo \"keep my spacing\""') keep my spacing