Linux
通過 ssh 執行腳本時,echo 的顏色程式碼不起作用
全部。
我有以下範常式式碼:
#!/bin/bash echo "[\033[01;32m green \033[01;37m]" echo "[\033[01;31m red \033[01;37m]"
當我在本地執行這個腳本時,我得到了正確的輸出顏色。
但是如果我通過 scp 複製到另一台主機並使用“ssh avadmin@10.224.1.6”sudo sh color-test.sh“”執行它,腳本將列印程式碼而不是顏色。
遠端執行腳本時我應該有什麼注意事項嗎?
的行為
echo '\033'
取決於實施和/或環境。
對於 UNIX 兼容的實現,它輸出一個 ESC 字元後跟 NL,在其他一些實現中,它輸出
\033
後跟 NL。有些支持擴展-e
這些\033
轉義序列的選項。您的腳本有一個
#! /bin/bash
she-bang,但您將腳本執行為sh the-script
,所以sh
解釋它,而不是bash
.在大多數係統上,
bash
’secho
內置預設情況下不會擴展\x
序列。只有在xpg_echo
啟用該選項或使用該-e
選項時才會這樣做(除非xpg_echo
和posix
選項都已啟用)。在這方面,您的本地
sh
實現可能是與 UNIX 兼容的(如dash
,或使用預設啟用bash
的選項編xpg_echo
譯),但遠端伺服器上的實現不是(如bash
)。printf '[\33[01;32m green \33[01;37m]\n' printf '[\33[01;31m red \33[01;37m]\n'