2017-11-24 5 views
2

これは初心者の方に聞こえるかもしれませんが、これを動作させるためにすべてを試しました。 小さな引用符で単語を印刷したい:'John'シェルスクリプト。私は/bin/bash -l -cの代わりにコードのこの部分をJavaで実行するので、シェルコマンドを文字列として渡す必要があります。私もecho -eオプションで試しました。オプション-cを使用してシェルスクリプトの一重引用符を出力する

/bin/bash -l -c 'echo "'John'"' 

私が欲しいの出力は次のようになります。

が、私は単一引用符をエスケープしようとしたが、何も今のところ助けません。何か案は?

答えて

0

二重引用符を削除し、単一引用符をエスケープしてみてください。

​​
2

あなたはbashで巣単一引用符がないので、ラインが適切にエスケープし、そう

/bin/bash -l -c 'echo "'John'"' 
       |......| ---------- single quoted 
         |....| ----- not quoted 
          |.| --- quoted 

として解釈されます単一引用符:

/bin/bash -c 'echo "'\''John'\''"' 

または単一引用符の文字列が本当に単純な場合は、

/bin/bash -c 'echo "'\'John\''"' 
0

一般的な回避策は、printfを使用することです。したがって、書式文字列にリテラルの一重引用符を使用する必要はありません。

bash -l -c 'printf "\x27John\x27\n"' 

(ここbash -lを使用すると、おそらく見当違いと移植性がある。)

関連する問題