まぁ、ご存じの方も多いと思うけど挙動が異なるので、注意。はまりました。
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 を使ってくれますので、こちらが意図したとおりの動作がきちんと行われます。
スクリプトからシェルを呼び出したりする場合にも、自分が普段使っている環境を明示してやることが必要ですね。そうじゃないと、私みたいにはまります。
知ったらしまい
相場格言
投稿者プロフィール
最新の投稿
- Linux2024年9月8日24.04 の Update ではまった
- ノン・カテゴリ2024年7月21日Kindle 世代交代
- Linux2024年7月7日convert → magick
- Mac2024年7月6日消えてしまった ATOK を再び出す方法