第一章:The Missing Code Library--8.避免不合要求的echo方法

大部分流行的Unix和Linux版本都有一個echo命令。它包含有-n選項來禁止換行,但並非全部的版本都同樣。其中一些版本的echo命令使用\c做爲一個特殊的嵌入字符來禁止換行,還有一些則必須換行後才能輸出。想要搞明白你本身的echo版本是什麼樣的,很是簡單:只須要在命令行上鍵入下面的語句便可:
echo -n "The rain in Spain";echo " falls mainly on the Plain"
若是你的echo有-n選項,會有:
The rain in Spain falls mainly on the Plain
若是沒有,那麼則是另外一番景象:
-n The rain in Spain
 falls mainly on the Plain
確保腳本輸出是按照要求呈現給用戶是很是重要的,而且隨着腳本交互性的加強,這點會變得愈來愈重要。

代碼: shell

#!/bin/sh

# 本書中有很是多的方法來解決這種echo問題。其中我最喜歡的方式很是簡潔:
function echon
{
    echo "$*" | awk '{printf("%s", $0)}'  #注意,原文中,是沒有括號的,經測試,我是用的awk版本不支持,全部加上括號,仿C
}


# 你可能想要避免上面的內部調用awk命令的方法,不過,若是你有一個用戶級的printf命令的話
# 也能夠用它來代替:
echon()
{
    printf "%s" "$*"
}

# 若是你沒有printf命令,也不想調用awk,那麼請使用tr命令:
echon()
{
    echo "$*" | tr -d "\n"     # 參數請參考手冊頁
}
# 這個tr命令的版本是很是有效簡單的
運行腳本:
使用該腳本時,只須要在調用echo命令時用用echon簡單的替換下就好了,這樣就不會自動換行了。
#!/bin/sh
 
 function echon
 {
     echo "$*" | awk '{printf("%s", $0)}'
 }
 
 echon "Enter coordinates for satellite acquisition:"
 echo "HH"
 exit 0
輸出: ./poorEcho.sh  Enter coordinates for satellite acquisition:HH
相關文章
相關標籤/搜索