免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
23 shell 進程替換
  • 0.shell進程替換的用法
  • 1.使用進程替換的必要性
  • 2.進程替換的本質(zhì)

進程替換和命令替換非常相似。命令替換是把一個命令的輸出結(jié)果賦值給另一個變量,例如dir_files=`ls -l`date_time=$(date);而進程替換則是把一個命令的輸出結(jié)果傳遞給另一個(組)命令。

0.shell進程替換的用法

寫法含義注意點本質(zhì)
<(commands)

它借助于輸入重定向,可以將它的輸出結(jié)果作為另一個命令的輸入

commands 是一組命令列表,多個命令之間以分號;分隔。

注意,<>與圓括號之間是沒有空格的。

/dev/fd/n文件接受(commands)的輸出,作為另一個命令的輸入
>(commands)

它借助于輸出重定向,可以接受另一個命令的標(biāo)準(zhǔn)輸出結(jié)果

從/dev/fd/n文件中讀取內(nèi)容,作為(commands)的輸入

1.使用進程替換的必要性

舉栗結(jié)果說明

普通模式

  1. echo?"aaaaa"?|?read?AA
  2. echo?$AA
輸出結(jié)果為空

echo 命令在父?Shell?中執(zhí)行,而 read 命令在子 Shell 中執(zhí)行,

當(dāng) read 執(zhí)行結(jié)束時,子 Shell 被銷毀,AA 變量也就消失了。

管道中的命令總是在子 Shell 中執(zhí)行的,任何給變量賦值的命令都會遭遇到這個問題。

使用進程替換

  1. read?AA<?<(echo?"aaaaa")
  2. echo?$AA
輸出結(jié)果為aaaaa

整體上來看,Shell 把echo "aaaaa"的輸出結(jié)果作為 read 的輸入。

<()用來捕獲?echo 命令的輸出結(jié)果,<用來將該結(jié)果重定向到 read。

注意,兩個<之間是有空格的,第一個<表示輸入重定向,第二個<()連在一起表示進程替換。

read 命令和第二個 echo 命令都在當(dāng)前 Shell 進程中運行

讀取的數(shù)據(jù)也會保存到當(dāng)前進程的?AA 變量,所以使用 echo 能夠成功輸出。

進程替換用作「接受標(biāo)準(zhǔn)輸入」的例子

echo "qpy" > >(read; echo "你好,$REPLY")

運行結(jié)果:你好,qpy因為使用了重定向,read 命令從echo "qpy"的輸出結(jié)果中讀取數(shù)據(jù)。

2.進程替換的本質(zhì)

為了能夠在不同進程之間傳遞數(shù)據(jù),實際上進程替換會跟系統(tǒng)中的文件關(guān)聯(lián)起來,這個文件的名字為/dev/fd/n(n 是一個整數(shù))。該文件會作為參數(shù)傳遞給()中的命令,()中的命令對該文件是讀取還是寫入取決于進程替換格式是<還是>

  • 如果是>(),那么該文件會給()中的命令提供輸入;借助輸出重定向,要輸入的內(nèi)容可以從其它命令而來。
  • 如果是<(),那么該文件會接收()中命令的輸出結(jié)果;借助輸入重定向,可以將該文件的內(nèi)容作為其它命令的輸入。


使用 echo 命令可以查看進程替換對應(yīng)的文件名:

命令輸出說明

echo >(true)

/dev/fd/63

/dev/fd/目錄下有很多序號文件,進程替換一般用的是 63 號文件,該文件是系統(tǒng)內(nèi)部文件,我們一般查看不到。

/dev/fd/63文件起到了數(shù)據(jù)中轉(zhuǎn)或者數(shù)據(jù)橋梁的作用,借助重定向,它將>()內(nèi)部的命令和外部的命令聯(lián)系起來,

使得數(shù)據(jù)能夠在這些命令之間流通。

echo <(true)

/dev/fd/63

echo >(true) <(true)

/dev/fd/63 /dev/fd/62

echo "qpy" > >(read; echo "hello, $REPLY")

hello, qpy

第一個>表示輸出重定向,它把第一個 echo 命令的輸出結(jié)果重定向到/dev/fd/63文件中。

>()中的read命令從/dev/fd/63中讀取內(nèi)容,然后用echo 命令輸出 read 讀取到的內(nèi)容。

?來源:https://www.icode9.com/content-3-599851.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一篇文章Shell腳本快速入門
I/O重定向的原理和實現(xiàn)
解釋>/dev/null2>&1
I/O重定向 詳解及例子
Linux基礎(chǔ)入門學(xué)習(xí)筆記20135227黃曉妍
linux下如何簡單有效的清空或刪除大文件內(nèi)容
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服