shell在面对用户输入的时候一般使用read进行处理,read主要的参数如下:
read -p 可以在read后面接上一串字符串,使用双引号处理,这样可以避免使用echo处理的时候还要多写一行
read -t 设定超时时间
read -n1 设定用户输入多少字符,当用户输入到最大字符数时,自动跳转;当前设定是输入一个字符就跳转
read -s 不进行回显的输入方式,一般用于密码输入
举个栗子:
#!/bin/bash
#输入名字,10S不输入就超时
reade -t 10 -p "123454:"name
echo "$name"
#输入密码,使用不回显的输入方式,最多输入10个字符
read -t 10 -s -n10 -p "password:"password
echo "$password"
在运行脚本的时候也可以接受输入:
./admin.sh a b
其中a,b就是命令行输入,脚本获得这个输入后将这个输入放入对应的变量中,在shell中有默认的变量,如$1 $2等,对应参数位置来获取值
$0则是获取脚本的,可以通过该参数来串联执行脚本,但是最好使用basename进行调整,不然获取到的脚本都是绝对路径
使用$* $@可以读取所有的数据,但是两个还是有差异的,前者会将所有参数当中一个单词保存,后者会当中一个字符串中不同的单词保存
这样就出现了认为是一个参数和多个参数【参数之间一般使用空格分隔】
read还可以读取文件,一般和cat连接使用:
cat test.txt | while read line
read一次读取文件中的一行文本,通过循环读取完成,当读完后返回一个非0的状态码结束循环