Bashスクリプトで印刷する複数行の文字列があります。
docstring="
Headings
-H, -H CNT, -H=CNT, -HCNT, --heading CNT, --heading=CNT
Warnings
-W, -W CNT, -W=CNT, -WCNT, --warning CNT, --warning=CNT
Errors
-E, -E CNT, -E=CNT, -ECNT, --error CNT, --error=CNT"
echo "$docstring"
-
この文字列を使用して、or in colorで始まる行を印刷する関数を作成したいと思います{-
。
したがって、次の色が割り当てられます。
-H, -H CNT, -H=CNT, -HCNT, --heading CNT, --heading=CNT
-W, -W CNT, -W=CNT, -WCNT, --warning CNT, --warning=CNT
-E, -E CNT, -E=CNT, -ECNT, --error CNT, --error=CNT
ベストアンサー1
GNUの使い方sed、文字列に、\
または文字が含まれていないとします。`
"
$
printred(){
sed -E 's/^ *\{?-.*/tput setaf 1;printf "%s" "&";tput sgr0/e' <<< "$@"
}
使用法:
printred "$docstring"
別の色を選択するには、以下を確認してください。
for i in {0..7}; do
tput setaf "$i"
echo "tput setaf $i"
tput sgr0
done
指示:
CGIスクリプトとして使用しないでプライベートにしてください。 Stephane Chazelasが指摘したように、任意のコマンドを実行できるからです。これは信頼できる環境で使用するためのものです。または、入力文字列を削除するフィルタを作成します。