3.shell 条件测试
test -d $v1 判断v1是不是目录
bash -vx .sh以调试的方式执行
test与[ ]一样
格式一:test条件表达式
格式二:[ 条件表达式 ]
格式三:[[ 条件表达式 ]]
3.1文件测试
-r +file 当前用户是否有读权限
-L +file 文件是否是连接文件
-b + file 文件是否为设备文件
-c +file 文件是否为字符设备文件
-d FILE
FILE exists and is a directory
-e FILE
FILE exists
-f FILE
FILE exists and is a regular file
-g FILE
FILE exists and is set-group-ID
-G FILE
FILE exists and is owned by the effective group ID
-h FILE
FILE exists and is a symbolic link (same as -L)
-k FILE
FILE exists and has its sticky bit set
-L FILE
FILE exists and is a symbolic link (same as -h)
-O FILE
FILE exists and is owned by the effective user ID
-p FILE
FILE exists and is a named pipe
-r FILE
FILE exists and read permission is granted
-s FILE
FILE exists and has a size greater than zero
-S FILE
FILE exists and is a socket
-t FD file descriptor FD is opened on a terminal
-u FILE
FILE exists and its set-user-ID bit is set
-w FILE
FILE exists and write permission is granted
-x FILE
FILE exists and execute (or search) permission is granted
-d文件
文件存在并且是一个目录
-e文件
文件已存在
-f文件
文件存在并且是常规文件
-g文件
文件已存在并设置为组ID
-G文件
文件存在并且由有效组ID拥有
-h文件
文件存在并且是符号链接(与-L相同)
-k文件
文件存在并设置了其粘滞位
-L文件
文件存在并且是符号链接(与-h相同)
-O文件
文件存在并且由有效用户ID拥有
-p文件
文件存在并且是命名管道
-r文件
文件已存在并已授予读取权限
-s文件
文件存在且大小大于零
-S文件
文件存在并且是套接字
-在终端上打开文件描述符FD
-u文件
文件存在并且其设置用户ID位已设置
-w文件
文件已存在并授予写入权限
-x文件
文件存在并授予执行(或搜索)权限
3.2数值测试
INTEGER1 -eq INTEGER2 #等于
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2#大于等于
INTEGER1 is greater than or equal to INTEGER2
INTEGER1 -gt INTEGER2#大于
INTEGER1 is greater than INTEGER2
INTEGER1 -le INTEGER2#小于等于
INTEGER1 is less than or equal to INTEGER2
INTEGER1 -lt INTEGER2#小于
INTEGER1 is less than INTEGER2
INTEGER1 -ne INTEGER2#不等于
INTEGER1 is not equal to INTEGER2
3.3C风格的数值判断
3.4字符串比较
-n STRING
the length of STRING is nonzero
STRING equivalent to -n STRING
-z STRING
the length of STRING is zero
STRING1 = STRING2
the strings are equal
STRING1 != STRING2
the strings are not equal
3.5表达式
( EXPRESSION )
EXPRESSION is true
! EXPRESSION
EXPRESSION is false
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true
示例:用户创建
#!/bin/bash
read -p "Please input the number of users: " number
if [[ ! "$number" =~^[0-9]+$ ]];then
echo "$number is not number."
fi
read -p "Please input a name for users: " string
for i in `seq $number`
do
user=$string$number
useradd $user
if [ $? -eq 0 ];then
echo "$user is created."
fi
done