• bash-read使用方法


    read用法

    1. 通过read命令获取用户输入,并存入一个变量
    2. 读取的值默认是以空格分隔,可以通过自定义环境变量IFS修改分隔标志
      1. IFS的默认值是空格、Tab符号、换行符号,通常选取空格

    格式

    通过read命令获取用户输入,并存入一个变量

    read [options] [variable...]
    	options:
    		-t #:超时的秒数,超过指定时间,用户仍然没有输入,脚本放弃等待,继续向下执行
    		-p "text":指定用户输入的提示信息
    		-a:把用户输入赋值给一个数组,从0号开始
    			]# read -a name
    			]# zhao qian sun li
    			]# echo ${name[2]}
    			]# sun
    		-n [#]:指定只读取若干个字符作为变量值,而不是整行读取
    			]# read -n 3 text
    			]# asdfghjkl
    			]# echo $text
    			]# asd
    		-e:允许用户输入的时候,使用readline库提供的快捷键,例自动补全
    		-d delimiter:定义字符串delimiter的第一个字符作为用户输入的结束,而不是一个换行符
    		-r:raw模式,表示不把用户输入的反斜杠字符解释为转义字符
    		-s:设置用户的输入不在屏幕上显示,常常用于输入密码或保密信息
    

    示例

    1. 除了读取键盘的输入,可以用来读取文件

      while read line
      do
      	echo "$line"
      done < $filename
      例:
      #bin/bash
      input="/path/to/file"
      while read -r line
      do
      	echo "$line"
      done < "$input"
      
    2. 变量与用户输入值的关系

      1. 一个变量对应一个值

        read -t 3 -p "Please Enter your name:" NAME
        echo "Hi,$NAME"
        
      2. 一个变量对应一整行数据

      3. 多个变量对应多个值:一一对应赋值

        read -n -p "Please Enter your firstname and lastname:" FN LN
        echo "Hi,$LN $FN"
        
      4. 多个变量对应大于变量数的值:多余的输入项包含到最后一个变量中

        echo -n "Enter two values: "
        read a b c
        echo "$a $b $c"
        
      5. 多个变量对应小于变量数的值:额外的变量值为空

        read -p "Enter three values:" a b
        echo "$a $b"
        
      6. 没有定义变量:环境变量"REPLY"包含所有的输入 = 一个变量对应一整行数据

        read -n -p "Enter values: "
        echo "REPLY='$REPLY'"
        
    3. IFS定义分隔符为":"

      #!/usr/bin/env bash
      FILE=/etc/passwd
      read -p "Enter a username: " user_name
      INFO=$(grep "^${user_name}" $FILE)
      
      if [ -n $INFO ]; then
      	IFS=":" read user pw uid gid name home shell <<< $INFO
      	echo "User = $user"
      	echo "UID = $uid"
      	echo "GID = $gid"
      	echo "Passwd = $pwd"
      else
      	echo "No such user $user_name" &>/dev/null
      	exit 1
      fi
      
  • 相关阅读:
    虚拟机操作系统文件夹空间不足解决办法——对虚拟硬盘进行分区和格式化及 挂载到某个文件夹下
    设计模式(二十一)—职责链模式(行为型)
    VMware 中添加新的虚拟磁盘的方法
    设计模式(二十二)—中介者模式(行为型)
    level of detail algorithmrendering of massive realtime terrain
    金融领域实施项目特点总结
    第35周星期日总结
    第36周星期一小结
    第32周星期二总结
    第35周星期三小结
  • 原文地址:https://www.cnblogs.com/wanwz/p/13025646.html
Copyright © 2020-2023  润新知