使用管道符計算檔案行數指令碼如下:
#!/bin/sh
linenum=0
cat test | while read line
doecho "line content: $line"
((linenum+=1))
done
echo "line number: $linenum"
輸出結果為
line content: 1
line content: 2
line content: 3
line content: 4
line content: 5
line number: 0
使用重定向計算檔案函式指令碼如下:
#!/bin/sh
linenum=0
while read line
doecho "line content: $line"
((linenum+=1))
done < test
echo "line number: $linenum"
輸出結果為
line content: 1
line content: 2
line content: 3
line content: 4
line content: 5
line number: 5
分析結果:
使用管道符時,會fork出乙個子程序,變數在父子程序裡無法互通。使用第二種方式,在同乙個程序中,所以達到了我們預期的目的。
shell基礎之管道符和變數
管道符和變數 一 管道符和作業命令 1.txt wc l cat 1.txt greap aaa 管道符的命令就是把前面輸出的結果交給後面的命令 2.ctrl z 暫停乙個任務 3.jobs檢視後台的任務 4.bg id 把任務調到後台,使它到後台執行background執行多個任務要使用bg 1 ...
expect 互動時 管道符的問題
今天同事說expect互動出了問題,無法呼叫gzip解壓匯入資料庫,但是手動執行卻沒問題 先來看看問題 usr bin expect set timeout 10000 spawn zcat db xd 20220208 133003.sql.gz mysql u xd p xd expect re...
shell中使用管道符需要注意的點
寫個監控採集指令碼有一處使用了管道符,執行結果出乎意料,特來mark下 結論 管道符和括號會fork出乙個子程序,如果在子程序的工作區間內呼叫exit則退出的只是當前的子程序,不會退出主程序 測試管道符 cat test.sh bin bash function work pipeline func...