當while遇到重定向 sh的陷阱

2021-06-28 01:07:37 字數 405 閱讀 6913

當使用while讀取檔案時,可能出現while迴圈中讀取正常,而數值確傳不出去,不論是區域性變數和全域性變數。

錯誤**如下:(file是檔案的名字)

cat file|while read line

do count=`expr $count + 1`

done

echo $count

解決方法如下:

可以先關閉標準輸入,然後以你要讀取得檔案重新開啟它,這樣就不需要對while命令的輸入進行改向,也就不會用子shell的方式來執行它了。如下:

execcount=0

while read line

do count=`expr $count + 1`

done

exec < /dev/tty

當while遇到重定向 sh的陷阱

最近寫指令碼遇到乙個變數在while迴圈中重定向後丟掉的問題,經過幾番查詢,發現解決辦法,分享如下。以下內容來自網路。以下是我在程式設計時的親身體會 先看如下的程式 bin sh count 0 while read line docount expr count 1 done file echo ...

nginx網域名稱重定向遇到的問題

應客戶要求,需要給客戶配個網域名稱,然後我們的大牛強哥 建議後台不要配備網域名稱伺服器了,這樣不安全,一般都是對外的web伺服器才配置網域名稱 結合另外收藏的乙個博文安裝nginx,然後修改配置檔案如下 乙個網域名稱對應乙個conf檔案 server location share location ...

shell指令碼中while重定向的乙個坑

假設我有乙個需求 從data.txt裡按行讀取乙個檔案,按格式 行號 內容 輸出,再輸出讀取的行數。data.txt youth is not a time.it is a state of mind.oh,you are right.很簡單 bin bash i 0cat data.txt whi...