使用echo命令格式化

时间:2010-03-11 20:14:21

标签: linux bash unix eval echo

实际情况有点复杂,但我遇到的问题是我在 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

6 个答案:

答案 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