echo 文字列や変数の値を表示する
echo [オプション] [文字列...]試してみる
echo Hello, Linux引数の文字列を表示します。
echo "HOME is $HOME"変数は、二重引用符の中でも値に展開されます。
echo 'HOME is $HOME'単一引用符の中では展開されず、そのまま表示されます。
echo -e "col1\tcol2\nline2"-e で、\t(タブ)や \n(改行)などのエスケープを解釈します。
echo -n "no newline"; echo " <- 続けて出ます"-n で、末尾の改行を付けません。
echo "new" >> note.txt && cat note.txtリダイレクトで、ファイルに追記します。
主なオプション
-n | 末尾に改行を付けない |
|---|---|
-e | バックスラッシュのエスケープ(\n、\t など)を解釈する |
-E | エスケープを解釈しない(既定) |
解説
基本
echo は、引数をスペース1つで区切って表示し、最後に改行を付けます。変数の値の確認、スクリプトのメッセージ表示、ファイルへの書き込みなどに使います。
引用符の違い
二重引用符 "..." の中では、$HOME のような変数が展開されます。単一引用符 '...' の中では、何も展開されません。変数を表示したいか、文字としての $ を表示したいかで使い分けます。
エスケープシーケンス
bash の組み込みの echo は、既定ではバックスラッシュを解釈しません。-e を付けると、\n(改行)、\t(タブ)、\\(バックスラッシュ)などが使えます。
組み込みと外部コマンド
echo は、bash の組み込みコマンドとしても、/bin/echo というファイルとしても存在します。シェルで実行すると、組み込みの方が使われます。細かい挙動がシェルによって違うので、移植性が必要なスクリプトでは、改行などの扱いが確実な printf を使う人もいます。
終了コード
echo は、通常は終了コード 0 を返します。直前のコマンドの終了コードを確認するには、echo $? と書きます。