LinuxMint 17.2、カーネル4.4.0-97 - 一般を使用します。私は以下を含む小さなTestEcho.shスクリプトを作成しました。
#!/bin/bash
echo -e "\e[1;31m Text in Color \e[0m\n"
for code in {33..43}; do echo -e "\e[38;05;${code}m $code: Text in Color"; done ; echo "";
このecho -e
コマンドは、コマンドラインで実行されたときに予想される出力を提供します。つまり、エスケープコードを解釈し、テキストを色で表示します。
.shスクリプトの同じコマンドは、オプションを無視してリテラルテキストとして表示されるようecho
です。また、forループが破損しているようです。何がこれの原因ですか?さらに重要なのは、スクリプトを修正する方法です。-e
-e
echo -e
回答bash
(George Vasiliouに感謝します):代わりにスクリプトを実行してください。sh
$ bash ~/Download/TestEcho.sh
答え1
bashとshは異なるタイプのシェルです。 bashはshよりも最新でスマートです。スクリプトで作成した内容は、シェルを使用して実行されることを意味します#!/bin/bash
。bash
ただし、これはシェルを使用してsh ~/Download/TestEcho.sh
実行されます。sh