哈哈哈
1,$IFS 和空白
vim IFSandNull.sh
1 #!/bin/bash
2 # $IFS 處理空白的方法,與處理其它字符不同.
3
4 output_args_one_per_line()
5 {
6 for arg
7 do echo "[$arg]"
8 done
9 }
10
11 echo; echo "IFS=\" \""
12 echo "-------"
13
14 IFS=" "
15 var="a b c"
16
17 output_args_one_per_line $var # output_args_one_per_line `echo " a b c "`
18 #
19 # [a]
20 # [b]
21 # [c]
22
23 echo; echo "IFS=:"
24 echo "-----"
25
26 IFS=:;
27 var=":a::b:c:::"
28 output_args_one_per_line $var
29
30 echo
31 exit 0
結果:
2,$REPLY read 命令如果沒有給變量,那麼輸入將保存在$REPLY 中.在 select 菜單中也可用,但是隻 提供選擇的變量的項數,而不是變量本身的值.
1 #!/bin/bash
2 # reply.sh
3
4 # REPLY 是'read'命令結果保存的默認變量. \
5 echo
6 echo -n "What is your favorite vegetable? "
7 read
8
9 echo "Your favorite vegetable is $REPLY."
10 # 當且僅當在沒有變量提供給"read"命令時,
11 #+ REPLY 才保存最後一個"read"命令讀入的值.
12
13 echo
14 echo -n "What is your favorite fruit? "
15 read fruit
16 echo "Your favorite fruit is $fruit."
17 echo "but..."
18 echo "Value of \$REPLY is still $REPLY."
19 # $REPLY 還是保存着上一個 read 命令的值,
20 #+ 因爲變量$fruit 被傳入到了這個新的"read"命令中.
21
22 echo
23
24 exit 0
結果:
這個腳本已經運行的時間
vim runtime.sh
1 # !/bi/bash
2 # runtime.sh 腳本運行時間
3
4 TIME_LIMIT=10
5 INTERVAL=1
6
7 echo
8 echo "Hit Control-C to exit before $TIME_LIMIT seconds."
9 echo
10
11 while [ "$SECONDS" -le "$TIME_LIMIT" ]
12 do
13 if [ "$SECONDS" -eq 1 ]
14 then
15 units=second
16 else
17 units=seconds
18 fi
19
20 echo "This script has been running $SECONDS $units."
21 # 在一臺比較慢的或者是負載很大的機器上,這個腳本可能會跳過幾次循環
22 #+ 在一個 while 循環中.
23 sleep $INTERVAL
24 done
25
26 echo -e "\a" # Beep!
27
28 exit 0
結果: