Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >コマンドの使い方(Linux) >echo コマンド

echo コマンド2016/10/22

文字列を引数で渡してそれをそのまま標準出力に出力するコマンド。

引数を複数渡した場合は空白(U+0020)で区切って出力する。

デフォルトでは最後に自動で改行される。

-n の有無など環境によって仕様は大きく変わるので、移植性の問題は起きやすい。

HOWTO

最後に改行をさせないようにするには2014/12/24

-n をつける

$ echo -n "message ..."

printf コマンドも最後に改行がつかない。

文字を16進で指定して出力するには2016/11/03

環境によっては\x61 のような16進表記で文字を書ける。

環境によらず同じ動きをさせるにはechoよりもprintfコマンドのほうがよい。

$ /usr/bin/printf '\x61\xE3\x81\x82'aあ

単にprintf と書くと、シェルの組み込み関数が起動して、シェルによって挙動が異なってしまう。

printfecho と違ってデフォルトで最後に改行が付かない。

以下の例のように、\x61 などと書いてシェルによらず16進数表記で解釈してほしい場合は、シェル組み込みに頼らずに外部コマンドの/usr/bin/printf を使うしかない。

シェル組み込みのprintf

zshの場合

$ printf '\x61\xE3\x81\x82'aあ$ printf "\x61\xE3\x81\x82"aあ

bashの場合

$ printf '\x61\xE3\x81\x82'aあ$ printf "\x61\xE3\x81\x82"aあ

dashの場合

$ printf '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ printf "\x61\xE3\x81\x82"\x61\xE3\x81\x82

外部コマンドのprintf

zshの場合

$ /usr/bin/printf '\x61\xE3\x81\x82'aあ$ /usr/bin/printf "\x61\xE3\x81\x82"aあ

bashの場合

$ /usr/bin/printf '\x61\xE3\x81\x82'aあ$ /usr/bin/printf "\x61\xE3\x81\x82"aあ

dashの場合

$ /usr/bin/printf '\x61\xE3\x81\x82'aあ$ /usr/bin/printf "\x61\xE3\x81\x82"aあ

シェル組み込みのecho

zshの場合

$ echo '\x61\xE3\x81\x82'aあ$ echo "\x61\xE3\x81\x82"aあ

bashの場合

$ echo '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ echo "\x61\xE3\x81\x82"\x61\xE3\x81\x82

dashの場合

$ echo '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ echo "\x61\xE3\x81\x82"\x61\xE3\x81\x82

外部コマンドのecho

zshの場合

$ /bin/echo '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ /bin/echo "\x61\xE3\x81\x82"\x61\xE3\x81\x82

bashの場合

$ /bin/echo '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ /bin/echo "\x61\xE3\x81\x82"\x61\xE3\x81\x82

dashの場合

$ /bin/echo '\x61\xE3\x81\x82'\x61\xE3\x81\x82$ /bin/echo "\x61\xE3\x81\x82"\x61\xE3\x81\x82

(Ubuntu 14.04 で確認)

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。

[8]ページ先頭

©2009-2025 Movatter.jp