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 ~]#

bash变量详解的更多相关文章

  1. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  2. 4、Ubuntu系统环境变量详解

    参考:Linux公社Ubuntu系统环境变量详解 UNIX/Linux系统中的环境变量和库文件的使用方法 由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,因此我们需要了解 ...

  3. mysql show variables系统变量详解

    mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选 ...

  4. net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解

    asp.net core环境变量详解   环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...

  5. Maya 常用环境变量详解

    Maya 常用环境变量详解 前言: Maya 的环境变量让用户可以很方便的自定义 Maya 的功能. 在 Maya 的 Help 帮助文档中有专门的一个章节< Environment Varia ...

  6. asp.net core环境变量详解

    环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的环境变量在其它文件里面,不多说了,有兴趣的 ...

  7. Nginx基础篇(2)- Nginx基本配置文件和变量详解

    Nginx基本配置文件和变量详解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. ...

  8. 如何查找YUM安装的JAVA_HOME环境变量详解

    如何查找YUM安装的JAVA_HOME环境变量详解  更新时间:2017年10月27日 09:44:56   作者:铁锚   我要评论 这篇文章主要给大家介绍了关于如何查找YUM安装的JAVA_HOM ...

  9. Python变量详解

    Python变量详解 目录 Python变量详解 一.变量的定义 二.变量组成的三部分 2.1 变量名 2.1.1 变量名的命名规范 2.1.2 变量名的命名风格 2.2 赋值符号 2.3 变量值 三 ...

随机推荐

  1. personal project

    words count program 统计文本文件的字符数,单词数和行数. 实现一个统计程序,他能正确的统计程序文件中的字符数,单词数和行数. 源码链接 https://github.com/sup ...

  2. NopCommerce源码架构

    我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...

  3. Knowledge-Defined Networking

    知识定义的网络(Knowledge-Defined Networking) 来源:ACM SIGCOMM Computer Communication Review 年份:2017 是什么:容纳和利用 ...

  4. Eclipse: Difference between clean, build and publish

    https://stackoverflow.com/questions/5656989/eclipse-difference-between-clean-build-and-publish http: ...

  5. Java之修改文件内容:字符串逐行替换

    依赖包: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</a ...

  6. Lodop打印二维码内容长度不同如何大小相同

    利用Loodop打印控件打印二维码的时候,往往传入的数值是变量,有的只有一个数字,有的却一大堆数字和字母,根据内容长度不同,二维码大小也不同,这样如果批量打印二维码标签,传入的数据是不同的,会造成有的 ...

  7. codeforces500B

    New Year Permutation CodeForces - 500B User ainta has a permutation p1, p2, ..., pn. As the New Year ...

  8. pgm15

    这部分我们讨论结构学习,也就是 graph 的边我们并不清楚.很自然我们可以用 fully observed 数据来做,但是也可能碰到有 missing data 的情况.一般来说前者是比较常见的.就 ...

  9. pip download 只下载不安装命令的使用方法

    比如下载 django 1.8.11版本和simplejson 3.14.0版本的包 那么就将所需的包写入  requirement.txt 那么我的requirement.txt内容就是: djan ...

  10. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...