Linux Shell程式設計(26)——程式碼塊重定向

尹成發表於2014-09-30
像 while, until, 和 for 迴圈程式碼塊, 甚至 if/then 測試結構的程式碼塊都能做到標準輸入的重定向. 即使函式也可以使用這種重定向的格式 。所有的這些依靠程式碼塊結尾的 < 操作符來做到.


例子:while 迴圈的重定向

#!/bin/bash
# redir2.sh


if [ -z "$1" ]
then
  Filename=names.data       # 如果沒有指定檔名,則指定這個預設值.
else
  Filename=$1
fi  
#+ Filename=${1:-names.data}
#  這句可代替上面的測試 (引數替換).


count=0


echo


while [ "$name" != Smith ]  # 為什麼變數 $name 要用引號?
do
  read name                 # 從$Filename檔案中讀而非在標準輸入中讀.
  echo $name
  let "count += 1"
done <"$Filename"           # 重定向標準輸入到檔案$Filename. 
#    ^^^^^^^^^^^^


echo; echo "$count names read"; echo


exit 0


#  注意在老一些的shell指令碼程式語言裡,
#  因此, $count 值返回後會是 0, 此值是在迴圈開始前的值.
#  Bash 和 ksh 只要可能就避免啟用子shell,




abc=hi
echo -e "1\n2\n3" | while read l
     do abc="$l"
        echo $abc
     done
echo $abc


相關文章