echoコマンド(引数で指定した内容を標準出力に出力する)
形式
echo [-n][-e|-E][args ...]
機能
引数で指定した内容を標準出力に出力します。
出力する場合は,\で始まるエスケープ文字を置き換えます。エスケープ文字を置き換えたときの意味を次の表に示します。
エスケープ文字 |
意味 |
---|---|
\a |
アラート文字(ベル) |
\b |
バックスペース文字 |
\c |
行末の改行を抑止する(\cの後ろに指定した文字は出力されない) |
\f |
フォームフィード文字(改ページ) |
\n |
改行文字 |
\r |
復帰文字 |
\t |
タブ文字 |
\v |
垂直タブ文字 |
\0nnn※1 |
1〜3桁の8進数で表されたASCIIコードの文字(0〜7) |
\xnn※2 |
1〜2桁の16進数で表されたASCIIコードの文字(0〜9,a〜f,A〜F) |
\\ |
1つのバックスラッシュ文字 |
エスケープ文字を置き換えたい場合は,-eオプションの引数を次の例の2.のように"(ダブルクォーテーション)または'(シングルクォーテーション)で囲んでください。クォーテーションの有無と,-eオプションや-Eオプションの指定によるエスケープ文字の解釈を次の例に示します。
-
次の例では,標準出力には「ta」と出力されます。
echo -e \ta
-
次の例では,標準出力には「<タブ文字>a」と出力されます。
echo -e "\ta"
-
次の例では,標準出力には「ta」と出力されます。
echo -E \ta
-
次の例では,標準出力には「\ta」と出力されます。
echo -E "\ta"
- コマンドに指定したオプションと引数の解釈
-
echoコマンドは引数に指定された文字がすべて有効なオプション文字の場合,オプションと解釈します。次のように指定した場合,「eEn」はすべて有効なオプション文字のため,オプションと解釈します。
echo -eEn
しかし,1文字でも無効なオプション文字が指定されていた場合は,引数argsとして解釈します。次のように指定した場合,「a」は無効なオプション文字のため,引数argsと解釈し,「-eEna」を標準出力に出力します。
echo -eEna
また,次のように引数をクォーテーションで囲んだ場合,囲まれた文字列は1つの引数と解釈します。次のように指定した場合,スペースは無効なオプション文字のため,引数argsと解釈し,「-e a」を標準出力に出力します。
echo "-e a"
- エスケープ文字の解釈(-eオプションと-Eオプション)
-
-eオプションと-Eオプションの指定によって,エスケープ文字の解釈は次のようになります。
-
-eオプションを指定すると,エスケープ文字が解釈されます。
-
-Eオプションを指定すると,エスケープ文字は解釈されません。
-
-e,-Eオプションの両方を指定すると,最後に指定したオプションに従って動作します。
-
-e,-Eオプションのどちらも指定しなかった場合は,環境設定パラメーターESCAPE_SEQ_ECHO_DEFAULTの指定内容に従って動作します。ESCAPE_SEQ_ECHO_DEFAULTパラメーターについては,「7. 環境ファイルで設定するパラメーター」の「ESCAPE_SEQ_ECHO_DEFAULTパラメーター(エスケープ文字関連のオプション省略時のechoコマンドの動作を定義する)」を参照してください。
-
引数
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了 |
注意事項
-
この正規組み込みコマンドは,コマンドの構文を誤ってもコマンドを実行しているシェルは終了しません。
-
ASCIIコードの16進数表記でエスケープ文字を指定すると,エスケープ文字を直接指定した場合と同じ結果となります。
例えば次のように指定すると,どちらも「a<タブ文字>b」と出力されます。
echo -e "a\tb" echo -e "a\x09b"
また,次のように指定すると,out.txtにはどちらも「a<改行文字>b」が出力されますが,改行文字はCR+LFになります。【Windows限定】
echo -e "a\nb" > out.txt echo -e "a\x0ab" > out.txt
-
ASCIIコードの文字列でエスケープ文字を表す場合,ASCIIコードの範囲外の値を指定すると,出力される内容は端末に指定された文字コードに従います。そのため,印字不可能文字の場合,正しく出力されないことがあります。
-
引数にパス名を指定する場合は,\がエスケープ文字として置換されないよう,-Eオプションの指定やESCAPE_SEQ_ECHO_DEFAULTパラメーターにNOの指定をした環境で,echoコマンドを実行してください。
例えば次のどのコマンドでも,パス名(d:\a\b\c)は正しく出力されません。
FILE="d:\\a\\b\\c" echo $FILE echo "$FILE" echo "d:\\a\\b\\c" echo 'd:\a\b\c'
次のコマンドでは,どれもパス名(d:\a\b\c)が正しく出力されます。
FILE="d:\\a\\b\\c" echo -E $FILE echo -E "$FILE" echo -E "d:\\a\\b\\c" echo -E 'd:\a\b\c' FILE="d:\\\\a\\\\b\\\\c" echo $FILE echo 'd:\\a\\b\\c' echo d:\\\\a\\\\b\\\\c
使用例
-
LANG変数を出力します。
ジョブ定義スクリプトの内容
echo $LANG
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** ja_JP.eucJP