使用 LinuxMint 17.2,核心 4.4.0-97-generic。我製作了一個很小的 TestEcho.sh 腳本,其中包含:
#!/bin/bash
echo -e "\e[1;31m Text in Color \e[0m\n"
for code in {33..43}; do echo -e "\e[38;05;${code}m $code: Text in Color"; done ; echo "";
此echo -e
命令在命令列中執行時會給予預期的輸出。即它解釋轉義碼並以顏色顯示文字。
.sh 腳本中的相同命令echo
似乎忽略該-e
選項並顯示-e
為文字文字。此外,for 循環似乎也被破壞了。這是由什麼引起的echo -e
?更重要的是如何修復腳本?
回答(感謝 George Vasiliou):運行腳本bash
而不是sh
$ bash ~/Download/TestEcho.sh
答案1
bash 和 sh 是不同類型的 shell。 bash 是最新的並且比 sh 更聰明。在您的腳本中,您編寫的內容#!/bin/bash
意味著它將使用bash
shell 運行。但如果你使用的sh ~/Download/TestEcho.sh
話它將使用sh
shell 運行。