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 "\n" echo "您输入的年龄是:$age" read -n 1 -t 10 -p "请问你是性别是[Boy/Girl]:" sex echo "\n" case $sex in "B") echo "性别是:boy" ;; "G") echo "性别是:girl" ;; *) echo "性别未知!" ;; esac [root@node101.yinzhengjie.org.cn ~]#
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及意图备注)
作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/7653391.html