まぁ、ご存じの方も多いと思うけど挙動が異なるので、注意。はまりました。
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 を使ってくれますので、こちらが意図したとおりの動作がきちんと行われます。
スクリプトからシェルを呼び出したりする場合にも、自分が普段使っている環境を明示してやることが必要ですね。そうじゃないと、私みたいにはまります。
知ったらしまい
相場格言
投稿者プロフィール

最新の投稿
Mac2025年11月14日System 配下の Application を改変できない
Mac2025年11月9日mini-TIPS: クイックルックで音声が出ない場合
Linux2025年9月18日Ubuntu24.10 のリリース期限を忘れていた
Mac2025年9月15日詐欺メール


