加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX Shell数组 14.2? 读取用户输入

发布时间:2022-12-03 14:31:15 所属栏目:Unix 来源:未知
导读: 14.2 读取用户输入14.2.1 变量
上一章我们谈到如何定义或取消变量,变量可被设置为当前shell的局部变量,或是环境变量。如果您的shell脚本不需要调用其他脚本,其中的变量通常设置为脚本内

14.2 读取用户输入14.2.1 变量

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

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

范例14-3

1 or declare # local variable

2 export # global variable

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

14.2.2 read命令

read命令是一个内置命令,用于从终端或文件读取输入(参见表14-1)。read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空字符。如果read命令后未跟变量名,读入的行将被赋给内置变量REPLY。也可以用read命令来中断程序的运行,直至用户输入一个回车键。要知道如何有效地使用read命令从文件读取输入行UNIX Shell数组,请参见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开始。

范例14-5

(脚本)

#!/bin/bash

# Scriptname: printer_check

# Script to clear a hung-up printer

1 if [ $LOGNAME != root ]

then

echo "Must have root privileges to run this program"

exit 1

fi

2 cat

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!