【shell】处理用户输入

来源:互联网 发布:若风淘宝店网址多少 编辑:程序博客网 时间:2024/05/17 08:42

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的状态码结束循环