文章目錄
  1. 1. 1. 判断条件
  2. 2. 2. 字符串操作

1. 判断条件

1
2
3
4
if [ expr ]; then
elif [ expr ]; then
else
fi
  • 字符串判断

    [ str1 = str2 ]      当两个串有相同内容、长度时为真
    [ str1 != str2 ]      当串str1和str2不等时为真
    [ -n str1 ]        当串的长度大于0时为真(串非空)
    [ -z str1 ]        当串的长度为0时为真(空串)
    [ str1 ]         当串str1为非空时为真

  • 数字判断

    [ a -eq b ]    两数相等为真
    [ a -ne b ]    两数不等为真
    [ a -gt b ]    a大于b为真
    [ a -ge b ]    a大于等于b为真
    [ a -lt b ]    a小于b为真
    [ a -le b ]    a小于等于b为真

  • 文件判断

    [ -a FILE ]    FILE 存在则为真。
    [ -b FILE ]    FILE 存在且是一个块特殊文件则为真。
    [ -c FILE ]    FILE 存在且是一个字特殊文件则为真。
    [ -d FILE ]    FILE 存在且是一个目录则为真。
    [ -e FILE ]    FILE 存在则为真。
    [ -f FILE ]    FILE 存在且是一个普通文件则为真。
    [ -g FILE ]    FILE 存在且已经设置了SGID则为真。
    [ -h FILE ]    FILE 存在且是一个符号连接则为真。
    [ -k FILE ]    FILE 存在且已经设置了粘制位则为真。
    [ -p FILE ]    FILE 存在且是一个名字管道(F如果O)则为真。
    [ -r FILE ]    FILE 存在且是可读的则为真。
    [ -s FILE ]    FILE 存在且大小不为0则为真。
    [ -t FD ]    文件描述符 FD 打开且指向一个终端则为真。
    [ -u FILE ]    FILE 存在且设置了SUID (set user ID)则为真。
    [ -w FILE ]    FILE 如果 FILE 存在且是可写的则为真。
    [ -x FILE ]    FILE 存在且是可执行的则为真。
    [ -O FILE ]    FILE 存在且属有效用户ID则为真。
    [ -G FILE ]    FILE 存在且属有效用户组则为真。
    [ -L FILE ]    FILE 存在且是一个符号连接则为真。
    [ -N FILE ]    FILE 存在 and has been mod如果ied since it was last read则为真。
    [ -S FILE ]    FILE 存在且是一个套接字则为真。
    [ FILE1 -nt FILE2 ]    FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。
    [ FILE1 -ot FILE2 ]    FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
    [ FILE1 -ef FILE2 ]    FILE1 和 FILE2 指向相同的设备和节点号则为真。

  • 逻辑判断

    -a         与
    -o        或
    !        非

2. 字符串操作

1
2
3
4
5
6
7
8
9
10
11
${#string} $string的长度
${string:position} 在$string中, 从位置$position开始提取子串
${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串
${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串
${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串
${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串
${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement} 使用$replacement, 代替所有匹配的$substring
${string/#substring/replacement} 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement} 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
文章目錄
  1. 1. 1. 判断条件
  2. 2. 2. 字符串操作