read 可以从键盘或文件的某一行文本中读入信息,并将其赋值给一个变量。这里分为几种情况:
1、如果只指定一个变量,那么 read 会将所有的输入(回车之前的内容(包括空格))读入到变量中,如:[beyes@beyes-groad ~]$ read name
hello i am beyes
[beyes@beyes-groad ~]$ echo $name
hello i am beyes
2、给出两个变量,各赋给每个变量一个值:[beyes@beyes-groad ~]$ read name surname
beyes wang
[beyes@beyes-groad ~]$ echo $name
beyes
[beyes@beyes-groad ~]$ echo $surname
wang 上面,要赋给变量的两个值是用空格符隔开的两个字符串。
3、给出两个变量,有多个用空格符隔开的字符串作为输入值:[beyes@beyes-groad ~]$ read name surname
beyes wang king
[beyes@beyes-groad ~]$ echo $name
beyes
[beyes@beyes-groad ~]$ echo $surname
wang king 由上可见,第一个字符串被赋给了 $name 变量;而此后剩下的所有内容都被赋给了第 2 个变量
4、使用 -p 参数
-p 参数表示读取任何输入之前,在标准错误显示提示 prompt,末尾没有新行符。提示只有在输入来自终端时才会显示。示例代码:
#!/bin/sh
read-p "Enter your choie: [y/n]"input
a=${input:=y}
echo "your choice is: $a" 当运行 read 一行时,先输出提示信息,后面的 input 是隐含接受输入的一个变量。
如果直接按下回车,那么 input 为空,那么根据表达式,input 被赋值为 y,所以 a 也为 y。否则,a 为输入的值。
关于脚本中字符串处理见:http://www.groad.net/bbs/read.php?tid-2323.html
5、-n 参数
-n 参数用来指定最多可读入多少个字符,如果输入的字符少于 n 并按下回车,那么读取到的是输入的字符;如果输入的字符等于n(无法输出大于n,因为会马上返回),则读取动作自动返回:
[Bash shell] 纯文本查看 复制代码 #!/bin/sh
echo
echo -en "\t\tEnter your choice: "
read -n 3 option
echo "your choice is: $option"
6. -s 选项以非回显方式读入
非回显方式读入往往用于密码输入场合,比如:
[Bash shell] 纯文本查看 复制代码 #!/bin/sh
read -s瀀愀猀猀
echo "your password is $pass"
7. -t 选项设定超时读入
-t 选项指定一个超时时间,如果在该时间内没有按下回车确认你的输入,那么 read 不读入你所敲的内容,如:上面指定 3s 超时时间。
8. -d 选项指定界定符
-d 选项后接一个符号表示界定符,当读入的内容遇到该符号时,输入自动断开,即无需按下回车确认就能读入界定符前面的内容,如:如果我们输入 groad:net ,那么变量 pass 里的内容将是 groad 。 |