文字列の周りに引用符がないとエコーできないようです。

文字列の周りに引用符がないとエコーできないようです。

.shスクリプトで次の形式を試しています。

echo 'string' $var >> print.dat

以下を印刷します。

'string' 14.27

これは私が望むものとほぼ同じですが、引用符を消す必要があります。私に必要なのは:

string 14.27

ここに解決策を知っている人はいますか?これは簡単な質問だと確信していますが、周りを検索しましたが、欲しいものが見つかりません。たぶん、正確に何を検索するのかわかりません。

編集する:

助けてくれてありがとうが、認めるのは嫌だが、私はとても愚かな間違いを犯した。 print.datは必要に応じて印刷を続けますが、出力を表示するにはsh -xを使用しているため、文字列の周りに引用符が表示されます。

答え1

echo 'string' $var >print.dat

これにより、何も表示されませんが、次の値(参照がないため一部の変換が進行する可能性があります)をファイルにstring書き込みます。文字列の周りの引用符が削除されます。$varprint.dat

エイリアスを指定していないことを確認してくださいecho。同じ名前の別名またはシェル関数をバイパスするには、次のようにします。

command echo 'string' $var >print.dat

または/bin/echo代わりに使用してくださいecho

printf一般に、次の移植性に優れた方法を使用することもできますecho

printf 'string %s\n' "$var" >print.dat

答え2

この回避策はこれを行います(シェルバックスラッシュバックティックによって異なります)。

echo 'string' $var | tr -d \' >> print.dat

関連情報