これはカラーテキストを印刷する機能です。
cecho()
{
color=${1:-""} # defaults to original color if no color specified
colorreset="\E[0m" # back to black after function return
while read line; do
echo -e "$color$line$colorreset"
done
return
}
$ blue="\E[34m"
$ echo "message" | cecho $blue
$ message # it appears in blue
ただし、-nオプションを使用すると何も印刷されません。
$ echo -n "message" | cecho $blue
$
「-n」オプションが必要なのは、印刷するテキストに行全体のカラーワードのみが含まれているためです。たとえば、次のようになります。
$ echo -n "this is "
$ echo "blue" | cecho $blue
ベストアンサー1
あなたの問題は、「読み取り」が入力を読むために行末が必要であるという事実に関連していると思います。したがって、一部の入力が提供されるまで(つまり永久に)停止します。
たぶん、cechoに '-n'オプションを追加する必要があります。
$ echo "message | cecho -n $blue
-n
その後、関数を書き直して「」を確認し、echo
内部に適用しますcecho
。