看板 Linux 關於我們 聯絡資訊
我做一個search keyword in multi files Script shell 其中read 這一行無法產生作用, 也就是不能暫停迴圈, 直到我按一鍵 find "$1" -type f -iname "$2" | while read filename do matchStr=$(grep -inC3 "$3" "$filename" ) if [ "$matchStr" != "" ]; then echo "---" echo -e "\033[00;33m$filename\033[0m" grep -inC3 "$3" "$filename" --color read -p "enter any key...." answer fi done 我懷疑第二行的read 已經改變standard io 改成從 file而不是keyboard 這是我的懷疑啦 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.13.145.47 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1444964630.A.E26.html
yvb: find 之前加上 exec 5<&0; 然後 read -p 該句最後補上 0<&5 10/16 15:04
pttnews: 真的可行耶,請問大師,這是什麼魔法? 10/16 17:12
yvb: redirection operator - duplicating file descriptors 10/16 22:44
pttnews: 謝謝大師開導 10/17 10:29
goldie: find之前加開了fd 5的話,那是不是最好用完後把它關掉? 11/16 13:18
goldie: 也就是原文中的while do done之後… 11/16 13:19
goldie: 再新增一行 exec 5<&- 呢? 11/16 13:21
goldie: 以避免接下來後續script有地方誤用到?! 11/16 13:22