在脚本中test通常用来判断数值的大小、测试字符串是否存在及相等、测试文件是否存在以及是什么类型的,read可以通过键盘输入参数。test和read经常在一个脚本中出现,如让用户通过键盘输入用户名,数字,文件等,再通过test测试名字是否存在,数字是否相等,然后进行后续相关操作。

test:条件测试
用法一:test expression(表达式)
用法二:  [ expression ] ; ` expression `

1、整数测试
-eq:整数
-gt:大于
-ge:大于等于
-ne:不等于
-le:小于等于
-lt:小于

2、字符串测试:字符串一般加上单引号或双引号
==:测试字符串相等
!=:不等于
-n $A:测试变量A中是否有字符,有为真,没有为假
-z $A:测试A中是否为空,A中没有任何字符为真,有为假

文件测试:
-e /path/to/somewhere:测试文件是否存在
-f :测试是否为普通文件
-d:是否为目录
-l :链接文件

-r :是否可读
-w:可写
-x :可执行

组合条件:
!:取反
-a:与条件
-o:或条件关系

测试/tmp/mytest是否存在,不存在则添加:
                [ -e /tmp/mytest ] || mkdir /tmp/mytest
                [ ! -e /tmp/mytest ] && mkdir /tmp/mytest

判断两个数的大小;并显示大的那个数:
A=3;B=5
test $A -ge $B && echo "Max=$A" || echo "Max=$B"
[ $A -ge $B ] && echo "Max=$A" || echo "Max=$B"

判断一个用户是否存在:
id hadoop &> /dev/null || useradd hadoop && echo "hadoop exist"
! id hadoop &> /dev/null  && useradd hadoop || echo "hadoop exist"



read可现实直接从键盘输入参数:
常用选项有:
  1、       -p:允许read命令行中直接指定一个提示
如:read -p “Enter a username:" USERNAME

如一:read  A    B
                 aa    bb  cc
如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量
,如果输入的数据多于变量,则最后所有的值都给第一个变量;aa传给A,bb cc传给B。

二:  read  A   B   C
                aa  bb
如果输入的数据少于变量,则最后一个变量值为空,即C为空

2、选项:-t
-t # :#为一个数值,read可以指定时间,超出指定的时间将退出

read -t 5 -p "pleace enter a name:" NAME  
停留超过5秒将退出命令行

3、-s:用于设置密码
read -s -p "enter your password:" PASS
-s可将read命令中输入的数据不显示在显示器上(数据是显示的,只是read将文本颜色设置成与背景相同的颜色)


归纳:
$$:shell本身的PID
$!:shell最后运行的后台进程的PID
$?:返回值
$*:所有参数列表
$@:所有参数
$#:添加到shell的参数个数
$0:shell本身的文件名
$1-$n:添加到shell的各参数值