我希望看到有人能指出我做錯了什麼,因爲我很難過。我正在嘗試學習bash腳本來部署開發測試服務器。我試圖實現的一件事情是在腳本的一部分完成或操作完成時輸出狀態輸出。作爲一個例子:Bash腳本printf顏色來自變量?
printf "[ %s ] %s distribution detected. Validated as supported by this script.\n" "$PASSED" "$LINUX_DISTRO"
我有被格式化第一串,%s
,這是$PASSED
的值的問題。在腳本的開頭我已經定義$PASSED
爲
PASSED="\e[32mPASSED\e[0m"
然而,當我去執行腳本,輸出如下所示:
[ \e[32mPASSED\e[0m ] CENTOS distribution detected. Validated as supported by this script.
不是正確的輸出,它看起來像的:
[ PASSED ] CENTOS distribution detected. Validated as supported by this script.
其中「通過」用綠色書寫。
但是,我也注意到,如果我做到以下幾點:
printf "[ $PASSED ] %s distribution detected. Validated as supported by this script.\n" "$LINUX_DISTRO"
上述行爲正確,但我相信是沒有這樣做的正確方法。有任何想法嗎?
不要硬編碼終端在字符串中轉義,直到您知道您要寫入的終端類型爲止。並非所有的世界都是VT100!我建議你使用'tput'或類似的 - 這就是它的用途。 –
@TobySpeight我會看看'tput'。乾杯 –