UNIX Shell数组 14.2? 读取用户输入
上一章我们谈到如何定义或取消变量,变量可被设置为当前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 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |