在所有的計算機語言學習中,輸入輸出都是最基本的學習內容。而巧用輸入輸出也會讓程序更靈活。shell腳本語言也是如此,應該說echo既有輸出功能,也有輸入的功能(重定向到文件)。printf應該只有輸出功能,但在格式化輸出方面有優勢。比如:
echo "hello" "world"
echo "hello \n world ";echo "good"
echo -e "hello \n world \c" # -e 開啟轉義 \c 不換行
echo "與上面連接"
echo -n "hello"
echo "world"
echo "hello world" >test_output.txt
#>>
hello world
hello \n world
good
hello
world 與上面連接
helloworld
通過查看以上shell腳本的輸出結果,最關鍵的要記住以下幾點:
1. 每條echo語句結束,既可以有分號";",也可以沒有。但如果想連續寫2條以上腳本需要分號
2.參數-e 是為了轉義字符串中的特殊字符,比如換行符"\n"。否則,換行符當做一般字符輸出
3.參數-n 是為了讓2條echo語句中間不換行,連接到一起輸出
4. > 是輸出重定向到文件。
對於變量內容的輸出,也是很簡單。但如果變量后面緊跟字符串,需要把變量用{}括起來表示邊界。例如:
var="helo world";echo $var
var1="pretty"
echo ${var}good
echo $var$var1 - $var1
#>>>
hello world
hello worldgood
hello worldpretty - pretty
對於printf的輸出功能,主要用於格式化。例如:
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
#>>>
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.99
#%s %c %d %f 都是格式替代符,
%s 輸出一個字符串,
%d 整型輸出,
%c 輸出一個字符,
%f 輸出實數,以小數形式輸出。
此外,printf 與echo有一點非常不同,對於echo來說,語句結束之后,自動會換行。除非用其他轉義字符控制。
而printf默認是不換行的,而且printf中的字符串的換行符自動識別。
