14.2  读取用户输入

14.2.1  变量

上一章我们谈到如何定义或取消变量,变量可被设置为当前shell的局部变量,或是环境变量。如果您的shell脚本不需要调用其他脚本,其中的变量通常设置为脚本内的局部变量(参见第13.10节“变量”)。

要获取变量的值,在美元符后跟变量名即可。shell会对双引号内的美元符后的变量执行变量扩展,单引号中的美元符则不会被执行变量扩展。

范例14-3

1   name="John Doe" or declare name="John Doe"   # local variable

2   export NAME="John Doe"    # global variable

3   echo "$name" "$NAME"      # extract the value

14.2.2  read命令

read命令是一个内置命令,用于从终端或文件读取输入(参见表14-1)。read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空字符。如果read命令后未跟变量名,读入的行将被赋给内置变量REPLY。也可以用read命令来中断程序的运行,直至用户输入一个回车键。要知道如何有效地使用read命令从文件读取输入行,请参见14.6节的“循环控制命令”。如果带-r选项,read命令将忽略反斜杠/换行符对,而把反斜杠作为行的一部分。read命令有4个控制选项:-a,-e,-p,-r②。

表14-1 read命令

格    式

含    义

read answer

从标准输入读取一行并赋值给变量answer

read first last

从标准输入读取一行,直至遇到第一个空白符或换行符。把用户键入的第一个词存到变量first中,把该行的剩余部分保存到变量last中

read

标准输入读取一行并赋值给内置变量REPLY

read –a arrayname

读入一组词,依次赋值给数组arrayname③

(续表)

格    式

含    义

read -e

在交互式shell命令行中启用编辑器。例如,如果编辑器是vi,则可以在输入行时使用vi命令

read –p prompt

打印提示符,等待输入,并将输入赋值给REPLY变量

read –r line

允许输入包含反斜杠

范例14-4

(脚本)

#!/bin/bash

   # Scriptname: nosy

echo -e "Are you happy? \c"

1   read answer

echo "$answer is the right response."

echo -e "What is your full name? \c"

2   read first middle last

echo "Hello  $first"

echo –n "Where do you work? "

3   read

4   echo I guess $REPLY keeps you busy!

-------------------------------------------------------④

5   read -p "Enter your job title: "

6   echo "I thought you might be an $REPLY."

7   echo -n "Who are your best friends? "

8   read -a friends

9   echo "Say hi to ${friends[2]}."

-------------------------------------------------------

(输出)

$ nosy

Are you happy? Yes

1   Yes is the right response.

2   What is your full name? Jon Jake Jones

Hello Jon

3   Where do you work? the Chico Nut Factory

4   I guess the Chico Nut Factory keeps you busy!

5   Enter your job title: Accountant

6   I thought you might be an Accountant.

7,8   Who are your best friends?  Melvin Tim Ernesto

9   Say hi to Ernesto.

说明

1. read命令接收一行用户输入,将其值赋给变量answer。

2. read命令从用户处接收输入,将输入的第一个词赋给变量first,将第二个词赋给变量middle,然后将直到行尾的所有剩余单词都赋给变量last。

3. 从标准输入读取一行,赋值给内置变量REPLY。

4. 显示变量REPLY的值。

5. 带-p选项的read命令,显示提示“Enter your job title:”,把输入行赋值给特定内置变量REPLY。

6. 在字符串中显示变量REPLY的值。

7. 请求用户输入。

8. 带-a选项的read命令将输入当作一组词组成的数组,数组名为friends,读入数组的元素是Melvin、Tim和Ernesto。

9. 显示friends数组的第3个元素。数组下标从0开始。

Shell 读取用户输入的更多相关文章

  1. read命令读取用户输入

    read命令用于从终端或文件中读取用户输入,它读取整行输入,如果没有指定名称,读取的行被赋值给内部变量REPLY.read命令常用选项:-a,-p,-s,-t,-n 1.REPLY变量 $readhe ...

  2. [python]print简单用法和读取用户输入

    代码开发环境:Eclipse 1.打印字符串: print "Hello world!" myString = "Hello world!" print myS ...

  3. shell获取用户输入

    主题: 再学shell之获取用户输入echo -n(不换行)和read命令-p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 和“读文件”深入学习 1.基本读取read命令接收标准输 ...

  4. Shell编程—用户输入

    1命令行参数 1.1读取参数 bash shell会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的所有参数.这也包括shell所执行的脚本名称.位置参数 ...

  5. linux shell获取用户输入

    一.获取用户输入1.基本读取read命令接收标准输入的输入,或其它文件描述符的输入.得到输入后,read命令将数据输入放入一个标准变量中.[root@rac2 ~]# cat t8.sh #!/bin ...

  6. Linux shell脚本读取用户输入的参数

    新建一个test.sh文件 #!/bin/sh echo "1 : For Test" echo "2 : For nohup &" whiletrue ...

  7. 读取用户输入并判断的bash脚本

    #!/bin/bash echo -e "1) A"echo -e "2) B"echo -e "3) C"echo -e "4) ...

  8. day1(变量、常量、注释、用户输入、数据类型)

    一.变量 name = "SmallNine" 等号前面是变量名(标识符),等号后面是变量值 变量的主要作用:就是把程序运算的中间结果临时存到内存里,已备后面的代码继续调用. 变量 ...

  9. 用户输入input函数和代码注释

    一.读取用户输入 py3中input()读取用户输入,输出全部是默认str字符串数据类型,一般将其赋值变量,用户输入才继续往下走程序.(py2的不同已单独列出随笔) 二.注释 注释的作用:代码量大的时 ...

随机推荐

  1. Linux基础四

    vim编辑器 vi编辑器的增强版,语法高亮等扩展功能 vim三种工作模式  a,i,o等键输出模式 命令模式,输入模式,末行模式 模式间的切换 a:当前行插入 i:当前行插入 o:全新一行插入 :键末 ...

  2. 【前端】Vue2全家桶案例《看漫画》之五、引入axios

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_5.html 项目github地址:https://github.com/shamoyuu/ ...

  3. 【Unity3D】Unity3D开发《我的世界》之七、番外篇

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_07.html 本来上一篇就结束了,但是有小伙伴私信我觉得还差了很多重要的内容,比如 ...

  4. stm32开发之串口的调试

    总的函数如下 void USART1Configuration(void){    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Peri ...

  5. MySQL更改数据库表的存储引擎

    MySQL更改数据库表的存储引擎 1.查看表的原存储引擎 show create table user; 'user', 'CREATE TABLE `user` (\n `id` int(11) N ...

  6. Axure RP一个专业的快速原型设计工具

    Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写. Axure简要介绍 Axur ...

  7. Echarts自动刷新数据

    1.Echarts自动刷新数据 1.Echarts柱状图的正常配置 注:声明了 myChart.test这两个都有用 官方示例中myChart是声明在 function(ec)里面的 <scri ...

  8. React+webpack-Module Parse failed, Unexpected Character ‘ ’

    webpack.config.js中配置: { test: /\.scss$/, loaders: [ 'style-loader', 'css-loader', 'sass-loader' ], / ...

  9. eclipse中Maven项目pom.xml报错:com.thoughtworks.xstream.io.HierarchicalStreamDriver

    eclipse中创建Maven项目时 pom.xml报错:com.thoughtworks.xstream.io.HierarchicalStreamDriver 解决方案1.在pom文件中加入mav ...

  10. SpringMVC【开发Controller】详解

    前言 本文主要是讲解在Controller中的开发,主要的知识点有如下: 编码过滤器 使用注解开发 注解@RequestMapping详解 业务方法接收参数 字符串转日期 重定向和转发 返回JSON ...