言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. Bash辞典
  3. echo / printf

echo / printf

『echo』は文字列を標準出力に表示するコマンドです。『printf』はC言語の同名関数に似た書式指定付き出力ができ、改行の制御や数値の整形が可能です。

構文

echo [オプション] [文字列...]
printf 書式 [引数...]

オプション・書式一覧

コマンド / 書式概要
echo 文字列文字列を表示して末尾に改行を出力します。
echo -n 文字列末尾の改行を出力しません。
echo -e 文字列バックスラッシュエスケープを解釈します(\n・\t・\033[など)。
echo $変数変数の値を展開して表示します。
printf "%s\n" 文字列書式指定で文字列を出力します。
printf "%d\n" 数値整数として出力します。
printf "%05d\n" 数値5桁ゼロ埋めで出力します。
printf "%.2f\n" 数値小数点2桁で出力します。
printf "%10s\n" 文字列10文字幅で右詰め出力します。
printf "%-10s\n" 文字列10文字幅で左詰め出力します。

サンプルコード

『echo』で文字列を表示します。

echo "Hello, World!"
Hello, World!

変数の値を展開して表示します。

greeting.sh
NAME="Alice"
echo "Hello, $NAME!"
bash greeting.sh
Hello, Alice!

『-n』オプションで末尾の改行を出力しません。プロンプト表示などに使います。

echo_n.sh
echo -n "Processing..."
echo " done!"
bash echo_n.sh
Processing... done!

『-e』オプションでエスケープシーケンスを解釈します。色付き出力ができます。

color.sh
echo -e "\033[32mSuccess!\033[0m"
echo -e "\033[31mError!\033[0m"
bash color.sh
Success!
Error!

『printf』で書式指定付きの出力ができます。整数やゼロ埋めが可能です。

printf "%d\n" 42
42

ゼロ埋めで連番を出力します。ファイル名の生成などに便利です。

numbering.sh
for i in 1 2 3; do
    printf "file_%03d.txt\n" $i
done
bash numbering.sh
file_001.txt
file_002.txt
file_003.txt

なお、for 文はターミナルでも直接入力できます。『do』の後で Enter を押すと『> 』マークが表示され、これは「まだ入力が続く」というサインで、『done』を入力すると実行されます。

for i in 1 2 3; do
    printf "file_%03d.txt\n" $i
done
file_001.txt
file_002.txt
file_003.txt

『printf』でテーブル形式の整形出力をします。『%-10s』は左詰め10文字幅、『%5d』は右詰め5文字幅です。

table.sh
printf "%-10s %5s\n" "Name" "Score"
printf "%-10s %5d\n" "Alice" 95
printf "%-10s %5d\n" "Bob" 87
bash table.sh
Name       Score
Alice         95
Bob           87

概要

移植性を重視するスクリプトでは『$ echo -e』よりも『$ printf』を使うことが推奨されます。『$ echo -e』の動作はシェルや実装によって異なる場合がありますが、『$ printf』はPOSIX標準で動作が保証されています。

標準入力から行を読み取るには『read』を使います。出力をファイルに書き込むには『リダイレクト(>)』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。