echo
の複雑な歴史 デフォルトの操作はシェルごとに異なることを意味します。 POSIX では、echo
の結果が 最初の引数が -n
の場合、「実装定義」です または任意の引数にバックスラッシュが含まれています。
printf
を使用する方が信頼性が高くなります (組み込みコマンドまたは外部コマンドのいずれかとして) 動作がより明確に定義されている場合:C スタイルのバックスラッシュ エスケープと書式指定子が書式文字列 (最初の引数) でサポートされています。
printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar
bash のバックスラッシュ エスケープ シーケンスの展開を制御できます の echo
xpg_echo
を使用した組み込みコマンド シェル オプション。
bash の先頭に設定します echo
にするスクリプト -e
を追加することなく、バックスラッシュ エスケープを自動的に展開します
shopt -s xpg_echo
echo 'foo\nbar'
printf
を使用することをお勧めします すべての新しいスクリプト用。
printf '%s\n%s\n' "Hello" "World"
printf '%s\n' "Hello\nWorld"
bash myfile.sh
を使用する場合 、Bash は「バッチ」モードで実行され、別 処理し、しない プロファイルまたは rcfile を読み取ります。
. myfile.sh
を使用する場合 、ファイルはソースです 現在のシェル プロセスによって (その内容がユーザーによって入力されたかのように)、したがって、現在定義されているエイリアスが表示されます。
一般に、特定のシェル構成に依存するスクリプトを作成することは非常に悪い考えです。特に スクリプトで定義しない限り、エイリアス 自体。 (決して ユーザーの .bashrc
に依存する 、たとえそれがあなた自身のものであっても。)