shell管道學習

2021-09-25 02:58:44 字數 991 閱讀 3196

在shell指令碼中呼叫另乙個指令碼的三種不同方法

fork ( /directory/script.sh) :如果shell中包含執行命令,那麼子命令並不影響父級的命令。在子命令執行完後再執行父級命令,子級的環境變數不會影響到父級。

fork是最普通的, 就是直接在指令碼裡面用/directory/script.sh來呼叫script.sh這個指令碼。執行的時候開乙個sub-shell執行呼叫的指令碼,sub-shell執行的時候, parent-shell還在。

sub-shell執行完畢後返回parent-shell. sub-shell從parent-shell繼承環境變數.但是sub-shell中的環境變數不會帶回parent-shell

exec (exec /directory/script.sh):執行子級的命令後,不再執行父級命令。

exec與fork不同,不需要新開乙個sub-shell來執行被呼叫的指令碼. 被呼叫的指令碼與父指令碼在同乙個shell內執行。但是使用exec呼叫乙個新指令碼以後, 父指令碼中exec行之後的內容就不會再執行了。這是exec和source的區別

source (source /directory/script.sh):執行子級命令後繼續執行父級命令,同時子級設定的環境變數會影響到父級的環境變數。

與fork的區別是不新開乙個sub-shell來執行被呼叫的指令碼,而是在同乙個shell中執行. 所以被呼叫的指令碼中宣告的變數和環境變數, 都可以在主指令碼中得到和使用.

fifo(命名管道)

管道指建立一段記憶體空間和檔案描述符繫結,乙個管道有2個fd,乙個負責讀,乙個負責寫

mkfifo test #建立管道

exec 6<>test #將管道檔案和檔案描述符繫結

#寫操作

echo 「df -h」 >&6 或者echo 「df -h」 >test

#讀操作

while read s:

echo $s

done <&6

#關閉控制代碼

exec 6>&-

linux 管道學習

管道是linux中很重要的一種通訊方式,是把乙個程式的輸出直接連線到另乙個程式的輸入,常說的管道多是指無名管道,無名管道只能用於具有親緣關係的程序之間,這是它與有名管道的最大區別。有名管道叫named pipe或者fifo 先進先出 可以用函式mkfifo 建立。linux管道的實現機制 在linu...

程序間通訊 管道學習筆記

均為整理的資料,侵刪 ipc的通訊方式 管道.管道一般分為匿名管道和有名管道.管道是最基本的程序通訊的方式.匿名管道特點只能在父子程序之間進行使用.有名管道客戶克服管道沒有名字的限制 因此,除了具有管道所具有的功能之外,還允許無親緣關係程序之間的通訊 匿名管道 pipe 特徵 要實現管道,我們首先介...

MIMO通道學習

參考 原創 mimo技術雜談 一 魚與熊掌能否兼得?分集與復用的權衡 原創 mimo技術雜談 二 猶抱琵琶半遮面 mimo通道中隱藏的秘密 原創 mimo技術雜談 三 知己知彼,百戰不殆 通道資訊的獲取和應用 mimo技術雜談 四 ofdm那些事 學習了分集的概念,乙個字元可以通過幾條路徑從傳送端傳...