domain="www.google.com"
echo -e "\e[1;34m"$domain"\e[0m"
www.google.com
を緑の文字で出力すると予想しました。エコーコマンドを使用してエスケープシーケンスを出力する方法
は、代わりに私が効果を持つことができ、あなたはおそらく何ができる一つのことは、引用ANSI-C
を使用することである使用環境やシェルをによって
-e \e[1;34mwww.google.com\e[0m
domain="www.google.com"
echo -e "\e[1;34m"$domain"\e[0m"
www.google.com
を緑の文字で出力すると予想しました。エコーコマンドを使用してエスケープシーケンスを出力する方法
は、代わりに私が効果を持つことができ、あなたはおそらく何ができる一つのことは、引用ANSI-C
を使用することである使用環境やシェルをによって
-e \e[1;34mwww.google.com\e[0m
を得た:
echo $'\e[1;34m'${domain}$'\e[0m'
語の$ 'string'という形式は特別に扱われます。この単語は、 文字列に展開され、円記号エスケープ文字は ANSI C標準で指定された文字に置き換えられます。
https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
@ user299709:もう1つの方法は、 '\ e'の代わりにエスケープコード' \ 033'を使うことです(例えば 'echo -e '\ 033 [1; 34m'" $ {domain} "'\ 033 [0m' ')...いくつかのシェルは' \ e'を使用しません。そのような場合には、通常、エスケープ文字のエスケープ方法を使用する必要があります。 –
あなたはsh script.sh
でスクリプトを実行する場合は、明示的シェルではなく、シェバング行の一つとしてsh
を使用しています。 sh
がbash
へのリンクでない場合、それは悪いニュースです。プレーンなsh
シェルは、echo -e
をサポートしていない可能性があります。
./script.sh
shebang行でインタープリタを使用する。
これは有効な回答ですが、私はILIの答えを選択しました。これは、スクリプトの実行方法を変更することなく、色を直接表示できるようにしたからです。 – user299709
@ user299709 'bash'特有の機能を使用する場合、' sh'でスクリプトを実行しないでください。 – chepner
あなたはスクリプトを実行する方法を変更する必要があります。 –
あなたのシェルは本当にbashですか?私はそれがないと思う。これがスクリプトの場合は、上部に '#!/ bin/bash'を入れてください。 –
@JohnKugelmanはい、シバンはすでにトップにあります。 – user299709
どのように実行していますか? '。/ script.sh'または' sh script.sh'?後者をしないでください。 –