LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1108|回复: 5

菜鸟一个关于while里面的read的用法很菜的问题

[复制链接]
发表于 2005-7-29 11:11:54 | 显示全部楼层 |阅读模式
在其他地方看到这样一个脚本
只有当你输入不输入任何东西直接回车的时候才一行一行显示file的内容
我想改输入任何字符都一行一行显示..菜鸟.改不好..最好谁可以详细说说dd的用法.
小弟先谢过各位大侠了!!!

当需要对键盘输入进行判断并处理时,如下的脚本更好一点:
cat file | while read line
do
echo $line
echo " :: Please input any key(s):c"
str4read=""
while true
do
chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
str4read=$str4read$chr4read
if [ "$chr4read" = "" ] ;then break; fi
done
echo " :: |$str4read|"
done
 楼主| 发表于 2005-7-29 11:16:20 | 显示全部楼层
当需要对键盘输入进行判断并处理时,如下的脚本更好一点:
cat file | while read line
do
echo $line
echo " :: Please input any key(s):c"
str4read=""
while true
do
chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
str4read=$str4read$chr4read
break
#if [ "$chr4read" = "" ] ;then break; fi
done
echo " :: |$str4read|"
done
这样改有什么不对吗?可结果和没改一样
当需要对键盘输入进行判断并处理时,如下的脚本更好一点:
cat file | while read line
do
echo $line
echo " :: Please input any key(s):c"
str4read=""
while true
do
chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
str4read=$str4read$chr4read
chr4read=""
if [ "$chr4read" = "" ] ;then break; fi
done
echo " :: |$str4read|"
done
这样也不可以..痛苦哦...
回复 支持 反对

使用道具 举报

发表于 2005-7-29 13:01:14 | 显示全部楼层
dd的用法精华区就有!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-29 14:37:38 | 显示全部楼层
谢谢拉兄弟...能帮忙说说解决的办法吗?
回复 支持 反对

使用道具 举报

发表于 2005-8-10 15:09:23 | 显示全部楼层
不太明白。

help read 看看。

你的意思如果是输入一个字符不用回车就开始处理的话,read有一个参数 -n,n表示数字,n1表示一个字符,n2表示2个字符。
回复 支持 反对

使用道具 举报

发表于 2005-8-17 16:01:35 | 显示全部楼层
其实,你可以写一个比较简单的脚本就能实现你要得功能.比如说这个:
stty -echo
read ans
while : ;
do
        if [ "$ans"  = "" ];then
                stty echo
                break
        else
                read ans
                continue
        fi
done
cat $file
此脚本只有在你一开始就敲回车,或者输入别的什么东西后连续两次回车情况下,才会cat $file
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表