メニュー ホーム

zshのechoとbashのecho

まぁ、ご存じの方も多いと思うけど挙動が異なるので、注意。はまりました。

bashのechoコマンドはエスケープコントロールを出力できません。例えば、

echo -n "This is a Pen.¥¥rThat" ; echo

この出力は、bashとzshで異なります。もっともechoは組み込みコマンドとしている場合も多いので、正常に動作する場合もあるかと思います。少なくとも私の環境では、bashとzshで動作が異なりました。

¥¥rの部分が、「復帰」です。echoの先頭にある-nは明示しない限り開業を行わないオプションです。最後のechoは改行のみを行います。私の意図している表示は、”This is a Pen.”を出力して後、先頭に戻って(復帰)”That”を出力するというものです。その後に改行が行われますね。”This”の部分は”That”に上書きされて見えなくなります。つまり、”That is a Pen.”と出力されるはずなんですね。bashだと「復帰」が動作しませんでした。

zshでは組み込みコマンドとなっているようですね。シェルスクリプトでzshを明示しないで使ったら、「復帰」が機能せず悩んでしまいました。私が通常使っているのはzshなので、シェルスクリプトでも明示すればよかったんですね。ついつい、#!/bin/bashとか書いていました。zshをはっきり宣言してやれば、zsh組み込みのechoを使ってくれますので、こちらが意図したとおりの動作がきちんと行われます。

スクリプトからシェルを呼び出したりする場合にも、自分が普段使っている環境を明示してやることが必要ですね。そうじゃないと、私みたいにはまります。


知ったらしまい

相場格言

投稿者プロフィール

會澤 賢一
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

カテゴリー:Linux Mac ノン・カテゴリ

タグ:

會澤 賢一

新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

お気軽にコメントを残していってください