概要
文字列や変数展開結果を標準出力へ表示します。手軽ですが、エスケープ解釈や-nの扱いに実装差があるため、厳密な出力制御にはprintfを使うほうが安全です。
基本構文
echo [文字列 ...]詳細解説
echoは、シェル学習の最初期に触れる出力系コマンドです。変数展開の確認、区切り文字付きの簡単な表示、シェルスクリプト中の進行状況表示などに広く使われます。
ただし、echoは見た目以上に互換性差の影響を受けやすいコマンドです。-nをオプションとして扱うか文字列として扱うか、バックスラッシュを解釈するかどうかは実装差があります。POSIXでも、移植性が必要な場面ではprintfの使用が推奨されています。
このコマンドを使う場面
簡単な文字列表示、変数展開の確認、シェルスクリプト中の途中経過表示、パイプラインの先頭で短い文字列を流したい時に使います。
まず安全に試す方法
1. name="Linux"
2. echo "$name"
3. echo "A B C"
4. echo '$name'
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
二重引用符と単一引用符で変数展開結果がどう変わるか確認します。
-
改行制御とタブ出力でechoとprintfの違いを観察します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.1 コマンドラインの操作根拠: officialLinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。echoはその基礎を支える代表的なコマンドです。
-
LPIC-1
範囲: 105.1 シェル環境のカスタマイズと利用根拠: officialLPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。echoはその周辺知識と一緒に学ぶ価値が高いコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、echoはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
echo "Hello, Linux"Hello, Linux -
name="Kernel" echo "$name"Kernel
戻り値コード
- 0 正常終了しました。
- >0 出力失敗やシェル実装依存のエラーが発生しました。
使用例
echo Helloname="Linux"; echo "$name"echo "処理を開始します"
よくあるエラー
-
echo -eが環境によって効いたり効かなかったりする 原因: echoのエスケープ解釈は実装差があります。対処: 改行やタブを確実に出したい場合はprintfを使います。
-
echo $varで空白が崩れた 原因: 引用していないため、シェルの単語分割やパス名展開の影響を受けます。対処: 通常はecho "$var"のように二重引用符で囲みます。
導入・互換性情報
POSIXのechoは歴史的経緯が大きく、-nやバックスラッシュ解釈の扱いに実装差があります。移植性が必要な用途ではprintfを使うのが安全です。
- Debian GNU/Linux / 13 / Bash 5.2.37
注意点 / セキュリティリスク
危険度は低いですが、設定ファイル生成やパイプ処理へ流す場面では、引用不足やエスケープ差が不具合の原因になります。厳密な制御が必要ならprintfへ切り替えてください。
FAQ
-
Q. echoとprintfはどう使い分けますか。 A. 簡単な表示はecho、移植性と整形精度が必要な時はprintfです。
関連用語
参照リンク
- カテゴリー: Shell And Cli
- シェル依存: Posix Sh
- レベル: Beginner
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎