輸入重定向->語法
wc獲取到的三個重要信息
語法結(jié)構(gòu): wc 文件名稱
第一個參數(shù): 文本行數(shù)
第二個參數(shù): 文本詞數(shù)
第三個參數(shù): 文本字節(jié)數(shù)
注意:
輸入重定向需要cat配合
cat 文件名
________________________________________________________
輸出重定向
在temp.sh中添加:
echo "重定向到2" > temp2.sh
這個是把temp2.sh的內(nèi)容替換為"重定向到2"
echo "重定向到2" >> temp2.sh
這個是追加到后面
重定向輸入和輸出還有錯誤的概念:
shell腳本語言將: 輸入,輸出,錯誤分為了三中描述符:
輸入: 0
輸出: 1
錯誤: 2
::::::::::::::::::
第一種:STDIN標(biāo)準(zhǔn)輸入->0->也就是鍵盤輸入
使用:
直接在終端輸入cat
然后輸入任何字符點擊回車就是打印剛才輸入的內(nèi)容例子:
xiaojie@bogon Desktop $ cat
111
111
222
222
::::::::::::::::::::::::::::::::::::::::::::::::::::::
第二種非標(biāo)準(zhǔn)輸入:非STDIN-> 文件輸入;也就是讀取文件內(nèi)容,輸出到控制臺
例子
xiaojie@bogon Desktop $ touch han.txt
xiaojie@bogon Desktop $ open han.txt
xiaojie@bogon Desktop $ cat han.txt
111
222
33
4
說明:open打開文件han.txt輸入內(nèi)容;
::::::::::::::::::::::::::::::::::::::::::::::::::::::
第三種: STDOUT-> 標(biāo)準(zhǔn)輸出->1->對應(yīng)終端顯示
例子:屬于輸出
xiaojie@bogon Desktop $ cat han.txt
111
222
33
4
再例子:
who >> sh.sh
who說明:意思是輸出當(dāng)前用戶信息到控制臺;而此處的意思是追加用戶信息到sh.sh到文件中;
重定向錯誤信息->輸出到文件中
例子:
如果當(dāng)前文件shs.sh不存在則執(zhí)行:
xiaojie@bogon Desktop $ ls -l shs.sh
會報如下錯誤
ls: shs.sh: No such file or directory
此時將錯誤信息輸入到文件中需要執(zhí)行:
ls -l shs.sh 2> sh.sh
如果是覆蓋那就使用>如果是追加就使用>>
說明:
如果是查看多個文件可以在后面追加例如:
ls -l shs.sh shs1.sh shs2.sh
標(biāo)記重定向 >&2
例如在文件sh.sh中寫入內(nèi)容
echo "我是錯誤標(biāo)記" >&2
echo "我是正確的"
在終端輸入:
./sh.sh 2> error.sh
結(jié)果打開open error.sh可以看到
我是錯誤標(biāo)記
永久重定向
exec命令 批量輸出
例如:在sh.sh中輸入一下內(nèi)容
exec 1> error.sh
echo "你好"
echo "我好"
echo "大家好"
執(zhí)行文件: ./sh.sh
我們會在error.sh中看到
你好
我好
大家好
說明:
如果改成錯誤2是不會打印的必須標(biāo)記錯誤標(biāo)識 >&2
exec 2> error.sh
echo "你好" >&2
echo "我好"
echo "大家好"
以上執(zhí)行命令只會打印:
你好
創(chuàng)建自定義重定向
exec 3>&1
exec 1>temp.sh
echo "你好"
echo "你好1"
echo "你好2"
exec 1>&3
其實我也沒咋搞明白這個有什么意義
把3定向到1;最后再把1給定向到3
例子
exec 6<&0
exec 0<temp.sh
count=1
while read line
do
echo "當(dāng)前行數(shù):$count 讀取內(nèi)容:$line"
count=$[$count + 1]
done
#恢復(fù)到之前文件描述符
exec 0<&6
read -p "你是不是一個好人?" isNo
case $isNo in
Y|y) echo "好人";;
N|n) echo "壞人";;
*) echo "不好不壞";;
esac
這段也是沒咋明白哈哈哈
創(chuàng)建讀寫文件描述符
作用:一個文件既可以讀也可以寫
exec 3<>temp.sh
#讀取文件內(nèi)容
read line <&3
echo "Read: $line"
#寫入內(nèi)容
echo "My Name is Tom" >&3
創(chuàng)建文件讀寫描述符"<>"
#!/bin/bash
#創(chuàng)建文件描述符
exec 3<>temp.sh
#循環(huán)讀取內(nèi)容
while read line<&3
do
echo "讀取到的數(shù)據(jù): $line"
done
#向temp.sh寫入內(nèi)容
echo "讀取結(jié)束" >&3
關(guān)閉文件描述符">&-"
#!/bin/bash
exec 3<>temp.sh
while read line<&3
do
echo "讀取到的數(shù)據(jù): $line"
done
#關(guān)閉文件描述符
exec 3>&-
echo "讀取結(jié)束"
同時需要說明:
關(guān)閉之后是不能再使用3的不然會報錯
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。