Bash、エクスポート、簡単なコマンド接続のための「-n」は「-n」を削除します。

Bash、エクスポート、簡単なコマンド接続のための「-n」は「-n」を削除します。

私はこれに対する答えを見つけることができず、明らかなようですが、まだ助けが必要です。

コマンドラインオプションを作成しようとしたときに、さまざまなフラグを使用し、それをエコーし​​て正しいことを確認しました。

ただし、この例はまだ失敗します。

declare foo="-n 40 "
echo $foo

実行すると「40」のみ表示されます。

前にダッシュを追加すると-n、印刷--nバックスラッシュ/エスケープ?これを印刷します。要するに、私はこの単純なテキストを正しく表示するために何が起こっているのかわかりません。試してみました。--(処理を中止)は役に立ちません。

可能であれば、文書のどの部分を指摘し、これがなぜ説明されるのかを説明してください。-nそうすれば、今後はやらないことを学んで直すことができます。

ありがとうございます。

答え1

bashecho組み込み関数は-n引数をそれ自体として解釈します(help echoまたは で説明されているようにman bash)。

-n 改行が追加されていません。

他のいくつかのecho実装も同じことをします。

代わりに使用してくださいprintf

printf '%s\n' "$foo"

関連情報