对于shell脚本来说,可以接收外部输入的数据,并将结果输出保存;这就依赖read命令和$?全局变量,在本节中进行详细说明。脚本输入变量
1. shell脚本输入和示例
shell脚本输入变量通过$n(n=1,2...)获取输入值,具体格式如下所示。
# $1, $2表示文件输入值
# 如 ./test.sh test1 test2
# 则 $1=test1, $2=test2
echo"read 1 value is $1"
echo"read 2 value is $2"
读取命令行输入的值使用read命令,支持选项如下所示。
读取命令行输入的值使用read命令。
| |
|---|
| |
| |
| 设置读取n个字符后结束,默认会读取标准输入的一整行内容 |
| 支持读取, 而默认read命令会将\理解为转义字符 |
| |
| |
具体示例如下所示。
# 读取外部数据,存储到value中
read -p "read:" value;
# 超时等待5s输入用户名
read -t 5 -p "输入用户名:" user
read -s -p "输入密码:" passwd
useradd "$user"
echo$passwd | passwd --stdin "$user"
脚本离开处理
在shell脚本中,用`$?`表示执行的状态,可以用exit命令返回脚本执行的结果,具体示例如下所示。
# 打印执行状态
if [[ $? -ne 0 ]]; then
read -p "shell faild, wheather exit?(y/n, default is y)" exit_val
if [ -z ${exit_val} ] || [ ${exit_val} == 'y' ]; then
exit 1
fi
fi
当判断其它脚本或命令执行结果不为0,此时执行结束并返回结果1,同样更新到$?中,用于后续脚本或者命令处理。