shell編程學習 2018-06-02

哈哈哈

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

結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章