Bash
這個腳本在做什麼?
#!/bin/bash echo 123456789 > out.txt exec 3<> out.txt read -n 4 <&3 echo -n 5 >&3 exec 3>&-
在面試筆試中被問到劇本末尾out.txt的內容。我確實執行了腳本後記,它給了我
123456789
. 但是我不知道腳本中發生了什麼,尤其是帶有 exec 語句的部分。我查找了聯機幫助頁和Google搜尋結果,exec
但找不到任何內容3<>
。精通shell腳本的人可以解釋這裡發生了什麼嗎?
echo 123456789 > out.txt
將字元串寫入文件123456789
。out.txt
該
exec 3<>out.txt
構造打開文件out.txt
進行讀寫<
,>
並將其附加到文件描述符#3。
read -n 4 <&3
讀取 4 個字元。
echo -n 5 >&3
寫入 5(將 5 替換為 5)。
exec 3>&-
關閉文件描述符#3。導致
cat out.txt 123456789
關於
exec
int的部分bash(1)
指出:**
exec [-cl] [-a name] [command [arguments]]
**如果command
指定,它將替換外殼。$$ … $$ 如果
command
未指定,則任何重定向都在目前 shell 中生效$$ … $$.