我有一個shell腳本,我希望在不同的Linux服務器上運行。當我使用-e選項運行echo命令並在字符串中轉義字符時,它不會像Ubuntu 12.04或Ubuntu 11.04上的sh shell那樣按預期執行。我們希望腳本能夠使用的兩臺服務器正在運行CentOS 5.3和Ubuntu 12.04。當我在bash兩個服務器上運行下面的命令的預期輸出產生:echo -e反斜槓轉義在sh中沒有得到尊重
$ echo -e "line1\nline2"
line1
line2
當我在SH CentOS的機器正確的輸出也產生上運行相同的命令。但是,當我在SH在Ubuntu 12.04 11.04或運行該命令的如下輸出產生:
$ echo -e "line1\nline2"
-e line1
line2
有趣如果我在SH在Ubuntu它自動地解釋轉義字符運行的下方。
$ echo "line1\nline2"
line1
line2
腳本需要在sh shell中運行,並且應該可以跨不同的機器移植。任何解決方案我也很欣賞鏈接到一些文檔解釋爲什麼或如何發生這種事情。
優秀!非常感謝,非常感謝。 –
@MarwanAlsabbagh'/ bin/echo'不是一個好的選擇。如果你真的想使用'/ bin/sh',使用'printf',否則使用不同的shell。 – ormaaj
很好,甚至更好 –