作者pttnews (PTT新闻)
看板Linux
标题[问题] 有关bash的read指令失效
时间Fri Oct 16 11:03:47 2015
我做一个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://webptt.com/cn.aspx?n=bbs/Linux/M.1444964630.A.E26.html
1F:推 yvb: find 之前加上 exec 5<&0; 然後 read -p 该句最後补上 0<&5 10/16 15:04
2F:→ pttnews: 真的可行耶,请问大师,这是什麽魔法? 10/16 17:12
3F:推 yvb: redirection operator - duplicating file descriptors 10/16 22:44
4F:→ pttnews: 谢谢大师开导 10/17 10:29
5F:推 goldie: find之前加开了fd 5的话,那是不是最好用完後把它关掉? 11/16 13:18
6F:→ goldie: 也就是原文中的while do done之後… 11/16 13:19
7F:推 goldie: 再新增一行 exec 5<&- 呢? 11/16 13:21
8F:→ goldie: 以避免接下来後续script有地方误用到?! 11/16 13:22