• SHELL脚本编程变量输入


                   SHELL脚本编程变量输入

                                      作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     
     
    一.使用read来把输入值分配给一个或多个shell变量
    read 从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量
    read命令的常用选项:
      -p 指定要显示的提示   -s 静默输入,一般用于密码   -n N 指定输入的字符长度N   -d ‘字符’ 输入结束符   -t N TIMEOUT为N秒

     

    二.read的命令行使用方法

    1>.通过管道赋值

    [root@node101.yinzhengjie.org.cn ~]# echo jason 18 | { read NAME AGE;echo "姓名是:$NAME,年龄是:$AGE岁";}      #使用read命令给NAME和AGE变量赋值。注意,管道是可以开启子进程的。
    姓名是:jason,年龄是:18岁
    [root@node101.yinzhengjie.org.cn ~]# 
    2>.通过重定向输入赋值
    [root@node101.yinzhengjie.org.cn ~]# read x y z <<< "aaa bbb ccc"
    [root@node101.yinzhengjie.org.cn ~]# echo $x
    aaa
    [root@node101.yinzhengjie.org.cn ~]# echo $y
    bbb
    [root@node101.yinzhengjie.org.cn ~]# echo $z
    ccc
    [root@node101.yinzhengjie.org.cn ~]# 
    3>."-p"选项使用案例
    [root@node101.yinzhengjie.org.cn ~]# read -p "Please input your password >>>: " passwd
    Please input your password >>>: jason
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# echo $passwd
    jason
    [root@node101.yinzhengjie.org.cn ~]# 
    4>."-s"选项使用案例
    [root@node101.yinzhengjie.org.cn ~]# unset passwd
    [root@node101.yinzhengjie.org.cn ~]# echo $passwd
    
    [root@node101.yinzhengjie.org.cn ~]# read -sp "Please input your password >>>: " passwd;echo
    Please input your password >>>:     #注意,使用"-s"选项后这里输入密码咱们就不会在终端显示了。
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# echo $passwd
    jason
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    5>."-n"选项使用案例
    [root@node101.yinzhengjie.org.cn ~]# read -n 3 -p "Please input your password >>>: " passwd;echo 
    Please input your password >>>: abc      #输入字符长度一旦达到3个就自动退出。
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# echo $passwd
    abc
    [root@node101.yinzhengjie.org.cn ~]# 
    6>."-d"选项使用案例
    [root@node101.yinzhengjie.org.cn ~]# read -d q -p "Please input your password >>>: " passwd;echo 
    Please input your password >>>: abcdefgq      #只要一输入咱们指定的字符"q"就立即退出
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# echo $passwd
    abcdefg
    [root@node101.yinzhengjie.org.cn ~]# 
    7>."-s"选项使用案例
    [root@node101.yinzhengjie.org.cn ~]# read -t 3 -p "Please input your password >>>: " passwd;echo 
    Please input your password >>>:             #不管是否又输入,在咱们规定的3秒后自动退出
    [root@node101.yinzhengjie.org.cn ~]# 
     
    三.使用read命令编写脚本
    1>.鸡兔同笼案例
    [root@node101.yinzhengjie.org.cn ~]# vim shell/chook_rabbit.sh
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# cat shell/chook_rabbit.sh
    #!/bin/bash
    #
    #********************************************************************
    #Author:        yinzhengjie
    #QQ:             1053419035
    #Date:             2019-11-22
    #FileName:        shell/chook_rabbit.sh
    #URL:             http://www.cnblogs.com/yinzhengjie
    #Description:        The test script
    #Copyright notice:     original works, no reprint! Otherwise, legal liability will be investigated.
    #********************************************************************
    
    read -p "Please input head >>>: " HEAD
    read -p "Please input feet >>>: " FOOT
    R=$[FOOT/2-HEAD]
    C=$[HEAD-R]
    echo "Chook: " $C
    echo "Rabbit: " $R
    [root@node101.yinzhengjie.org.cn ~]# 
    2>.打印输出的变量
    [root@node101.yinzhengjie.org.cn ~]# cat shell/read.sh
    #!/bin/bash
    #
    #********************************************************************
    #Author:        yinzhengjie
    #QQ:             1053419035
    #Date:             2019-11-22
    #FileName:        shell/read.sh
    #URL:             http://www.cnblogs.com/yinzhengjie
    #Description:        The test script
    #Copyright notice:     original works, no reprint! Otherwise, legal liability will be investigated.
    #********************************************************************
    
    read -t 10 -p "请输入用户名:" name
    echo "您输入的用户名是:$name"
      
    read -s -t 10 -p "请输入你的年龄:" age
    echo "
    "
    echo "您输入的年龄是:$age"
       
    read -n 1 -t 10 -p "请问你是性别是[Boy/Girl]:" sex
    echo "
    "
    case $sex in
       "B")
            echo "性别是:boy"
            ;;
       "G")
            echo "性别是:girl"
            ;;
       *)
            echo "性别未知!"
            ;;
    esac
    [root@node101.yinzhengjie.org.cn ~]# 

  • 相关阅读:
    Codevs_1403_新三国争霸_(Kruskal+动态规划)
    BZOJ_1084_[SCOI2005]_最大子矩阵_(动态规划)
    BZOJ_1180_[CROATIAN2009]_OTOCI_(LCT)
    BZOJ_1611_[Usaco2008_Feb]_Meteor_Shower流星雨_(bfs)
    hdu5338 (二进制,双指针)
    并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
    生成树专题
    生成树相关问题
    uvaLive5713 次小生成树
    如何将无向图变为点/边双连通,如何将有向图变为强连通图
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/7653391.html
Copyright © 2020-2023  润新知