bash变量详解
2024-10-12 06:23:38
SHELL脚本编程变量输入
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.使用read来把输入值分配给一个或多个shell变量
read 从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量
read命令的常用选项:
-p 指定要显示的提示
-s 静默输入,一般用于密码
-n N 指定输入的字符长度N
-d ‘字符’ 输入结束符
-t N TIMEOUT为N秒
二.read的命令行使用方法
1>.通过管道赋值
[root@node101.yinzhengjie.org.cn ~]# echo jason | { 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 -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 -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:
#Date: --
#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/-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:
#Date: --
#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 -p "请输入用户名:" name
echo "您输入的用户名是:$name" read -s -t -p "请输入你的年龄:" age
echo "\n"
echo "您输入的年龄是:$age" read -n -t -p "请问你是性别是[Boy/Girl]:" sex
echo "\n"
case $sex in
"B")
echo "性别是:boy"
;;
"G")
echo "性别是:girl"
;;
*)
echo "性别未知!"
;;
esac
[root@node101.yinzhengjie.org.cn ~]#
最新文章
- 和我一起看API(一)你所不知道的LinearLayout补充
- CSS3简单动画
- jsp 中的js 与 jstl 运行的先后顺序
- IE中使用jquery的fadeIn()失效的问题
- remove 清除binlog
- 烟草公司基于BPM的IT一体化变革
- UIView如何管理它的子视图
- Memcached学习(三)
- 显示/去掉CONSOLE窗口
- 使用Jmeter至WebService压力测试
- eval浅解
- Lustre文件系统测试——obdfilter-survey测试
- java学习笔记之String类
- 终结python协程----从yield到actor模型的实现
- golang-generate-1pixel-image
- python——位运算之进制转化
- Asp.net core 跨域设置
- 笔记:Python 字符串小记
- 为什么使用eval()将json字符串转换为对象要多加一个小括号
- 沉淀再出发:xml的意义和存在的价值
热门文章
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
- 变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
- 面象对象设计原则之六:迪米特原则(LeastKnowledge Principle, LKP)
- 关于js中this指向的理解总结!
- Database testing test scenarios
- Lodop强制分页LODOP.NewPage()和LODOP.NewPageA()
- 学习笔记12之通过ajax动态添加选项
- 国产首款5G手机抢先亮相:如此给力的说!
- BZOJ3732Network——kruskal重构树+倍增+LCA/最小生成树+倍增
- BZOJ2588Count on a tree——LCA+主席树