在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那些事 學習了分集的概念,乙個字元可以通過幾條路徑從傳送端傳...