1

実際の状況は少し複雑ですが、私が直面している問題は、 evalコマンド内にechoコマンドがあることです。そのようです:

$ eval echo 'keep   my     spacing'
keep my spacing
$ echo 'keep   my     spacing'
keep   my     spacing

最初のコマンドが2番目のコマンドと同じメッセージを出力するように、どうすればevalがスペースを取り除かないようにすることができるか疑問に思っていました...


実際に何が起こっているのか、より近い例を次に示します。

$ eval `python -c 'print "echo \"keep    my     spacing\""'`
keep my spacing
4

6 に答える 6

1

eval echo "'keep my spacing'"

于 2010-03-11T20:15:28.783 に答える
1
eval "echo 'keep   my     spacing'"
keep   my     spacing

それでもうまくいかない場合は、実際の状況について詳しく説明してください。

于 2010-03-11T20:16:10.950 に答える
1

それはのせいではありませんeval

`python -c 'print "echo \"keep    my     spacing\""'`

プリント

"keep my spacing"

代わりに、これを行うことができます:

python -c 'print "echo \"keep    my     spacing\""' | bash

このプリント

keep    my     spacing
于 2010-03-11T20:16:16.487 に答える
1

問題(Pythonの例)は、コマンド置換(バッククォートされた式)が引用符で保護されていないことです。修正するには、二重引用符で囲みます(引用符をより適切にネストするには、逆引用符$()の代わりに使用します)。

eval "$(python -c 'print "echo \"keep    my     spacing\""')"
于 2010-03-11T20:51:16.997 に答える
0

または printf -v を検討してください

于 2010-03-11T20:18:21.803 に答える
0
$ . <(python -c 'print "echo \"間隔を保つ\""')
私の間隔を保つ
于 2010-03-11T21:08:39.157 に答える