Linux Shell程式設計(28)——程式替換
程式替換與命令替換很相似. 命令替換把一個命令的結果賦給一個變數,例如 dir_contents=`ls -al`或xref=$. 程式替換則是把一個程式的輸出回饋給另一個程式 (換句話說,它把一個命令的結果傳送給另一個命令).
命令替換的一般形式
由圓括號括起的命令
>(command)
<(command)
啟動程式替換. 它是用/dev/fd/<n>檔案把在圓括號內的程式的處理結果傳送給另外一個程式.
在"<" 或or ">" 與圓括號之間是沒有空格的. 如果加了空格將會引起錯誤資訊.
Bash在兩個檔案描述符(file descriptors)之間建立了一個管道, --fIn 和 fOut--. true命令的標準輸入被連線到fOut(dup2(fOut, 0)), 然後Bash把/dev/fd/fIn作為引數傳給echo.如果系統的/dev/fd/<n>檔案不夠時,Bash會使用臨時檔案.
命令替換的一般形式
由圓括號括起的命令
>(command)
<(command)
啟動程式替換. 它是用/dev/fd/<n>檔案把在圓括號內的程式的處理結果傳送給另外一個程式.
在"<" 或or ">" 與圓括號之間是沒有空格的. 如果加了空格將會引起錯誤資訊.
Bash在兩個檔案描述符(file descriptors)之間建立了一個管道, --fIn 和 fOut--. true命令的標準輸入被連線到fOut(dup2(fOut, 0)), 然後Bash把/dev/fd/fIn作為引數傳給echo.如果系統的/dev/fd/<n>檔案不夠時,Bash會使用臨時檔案.
cat <(ls -l)
# 等同於 ls -l | cat
sort -k 9 <(ls -l /bin) <(ls -l /usr/bin) <(ls -l /usr/X11R6/bin)
# 列出系統中3個主要的'bin'目錄的所有檔案,並且按檔名排序.
# 注意是三個明顯不同的命令輸出回饋給'sort'.
diff <(command1) <(command2) # 給出兩個命令輸出的不同之處.
tar cf >(bzip2 -c > file.tar.bz2) $directory_name
# 呼叫"tar cf /dev/fd/?? $directory_name",和"bzip2 -c > file.tar.bz2".
#
# 因為/dev/fd/<n>的系統屬性,
# 所以兩個命令之間的管道不必是命名的.
#
# 這種效果可以模仿出來.
#
bzip2 -c < pipe > file.tar.bz2&
tar cf pipe $directory_name
rm pipe
# 或者
exec 3>&1
tar cf /dev/fd/4 $directory_name 4>&1 >&3 3>&- | bzip2 -c > file.tar.bz2 3>&-
exec 3>&-
相關文章
- Linux Shell程式設計(24)——命令替換Linux程式設計
- Linux Shell程式設計(6)——變數替換Linux程式設計變數
- shell替換程式碼
- shell替換程式裡的程式碼
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- Linux系統程式設計之程式替換:exec 函式族Linux程式設計函式
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- SHELL程式設計實現批量Netatalk字符集檔名替換程式設計
- Linux系統程式設計之程式控制(程式建立、終止、等待及替換)Linux程式設計
- Linux Shell程式設計(27)——子shellLinux程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Linux——程式建立、程式終止、程式等待、程式程式替換Linux
- linux下的SHELL程式設計Linux程式設計
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- Linux Shell程式設計(5)——shell特殊字元(下)Linux程式設計字元
- shell程式設計程式設計
- 程式等待和程式替換
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux Shell程式設計(15)——操作字串Linux程式設計字串
- Linux Shell程式設計(16)——迴圈Linux程式設計
- Linux Shell程式設計(29)——函式Linux程式設計函式
- Linux Shell程式設計(30)——別名Linux程式設計
- Linux Shell 程式設計實戰技巧Linux程式設計
- Linux的shell程式設計(一)(轉)Linux程式設計
- Linux的shell程式設計(二)(轉)Linux程式設計
- Linux的shell程式設計(三)(轉)Linux程式設計
- Linux的shell程式設計(四)(轉)Linux程式設計
- Linux入門---(三)Shell程式設計Linux程式設計
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- Linux Shell程式設計(26)——程式碼塊重定向Linux程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- Shell程式設計 --- Shell介紹程式設計
- 如果程式設計替換成中文就會怎樣? 程式設計師看了表示頭疼程式設計師