read

来源:互联网 发布:淘宝宝贝详情怎么设置 编辑:程序博客网 时间:2024/04/30 20:57

read

参数:

    -p : 设置提示语句

使用read –p “string” 时可以不跟变量,那么输入内容保存到环境变量REPLY中(echo $REPLY)

 

    -n : 指定输入字符最大个数。但输入字符数达到规定,自动停止输入,继续程序

    #!/bin/bash

read -n1 -p "What's your choice[Y/N]?" choice

printf "\n"

case $choice in

       Y|y)

          echo "yes"

       ;;           #不要忘写

       N|n)

       echo "no"

           ;; 

*) 

           echo "bye"

           ;; 

esac

 

exit 0

      

      

    -t : 设置read命令等待输入时间,当时间到时,read返回非零值

       #!/bin/bash

if read -t 5 -p "please input:" name

then

       echo "welcome $name"

else

       echo     #换行,不然sorry会出现在input:后                                                                     

       echo "sorry"

fi

exit 0

      

    -s : 使输入的数据不显示在屏幕上

    #!/bin/bash

read -s-p "Please input your password:" password

printf "\n"

echo "Your password is :$password"                                            

exit 0

 

    另一种不显示密码的方法:

#!/bin/bash

 

echo -n "Please input yourpasswrod:"

stty -echo

read password

stty echo

printf "\n"

echo "password read."

 

    读文件 : 每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。读取文件的关键是如何将文本中的数据传送给read命令。最常用的方法是对文件使用cat命令并通过管道将结果直接传送给包含read命令的while命令

#!/bin/bash

 

count=1

cat test1.sh | while read line

do 

echo"$count:$line"

       count=$((++count))       #equal: count=$(expr$count + 1)                                                     

done

 

exit 0

 

其实还可以这样读入一个文件

while read line

do

   

done < httpd.log

 

还可以

exec < file

 

while read line

do

 

done

 

 

现在实现文件复制:读取一个文件,将内容写入另一文件

#!/bin/bash

 

count=1

DES_FILE="/home/cat/practice/ffff.txt"

[ ! -f "$DES_FILE" ] &&touch $DES_FILE

cat test1.sh | while read line

do 

   echo "$line" >> $DES_FILE                                                   

   count=$(expr $count + 1)

done

 

exit 0

 

-d : 使用定界符结束输入

#!/bin/bash

 

echo "input \"EOF\" tofinish input!"                                          

read -d "EOF" var

echo -e "\nyour input is :"

echo $var

 

发现在输入E时程序就结束输入了

 

   

-a : 读入数组

 

 -e : 在命令行中使用编辑器

 

-r : 允许输入包括反斜杠

 

 

 

 

 

 

 

 

-a array  将词语赋值给 ARRAY 数组变量的序列下标成员,从

       零开始。

      -d delim持续读取直到读入 DELIM 变量中的第一个字符,而不是

       换行符

      -e    在一个交互式 shell 中使用 readline 获取

      -i text 使用 TEXT 文本作为 readline 的初始文字

      -n nchars读取 nchars 个字符之后返回,而不是等到读取

       换行符,但是分隔符仍然有效,如果遇到分隔符之前读

       取了不足 nchars 个字符

      -N nchars在准确读取了 nchars 个字符之后返回,除非遇到

       了文件结束符或者读超时,任何的分隔符都被忽略

      -p prompt在尝试读取之前输出 PROMPT 提示符并且不带

         换行符

      -r   不允许反斜杠转义任何字符

      -s    不显示终端的任何输入

      -t timeout  如果在 TIMEOUT 秒内没有读取一个完整的行则

       超时并且返回失败。TMOUT 变量的值是默认的超时时间。

        TIMEOUT可以是小数。如果 TIMEOUT 是0,那么仅当在

       指定的文件描述符上输入有效的时候,read 才返回成功。

       如果超过了超时时间,则返回状态码大于128

      -u fd   从文件描述符 FD 中读取,而不是标准输入

0 0
原创粉丝点击