Bash脚本编程中的操作符简述
由于写bash脚本时经常用到if这类的条件判断,而bash中的操作符跟C里面的有点大不一样,头开始还很不习惯,经常为了一个判断忙活上半天,于是找了点系统的资料看了下操作符相关的东西,简要罗列如下,希望对各位也有些许帮助。
文件测试: -e 文件存在 -a 文件存在(已弃用) -f 文件为一般文件,非目录或设备文件 -s 文件大小不为0 -d 这是一个目录 -c 这是一个块设备 -p 这个文件是一个管道 -h 这是一个符号链接文件 -L 这是一个符号链接 -S 这是一个Socket -t 文件被关联到一个终端设备上 -w 文件是否有可写权限 -x 文件是否有可执行权限 -g sgid标记被设置到文件或目录上 -u suid标记被设置到文件或目录上 -k 设置粘贴位置 -O 判断自己是否文件拥有者 -G 文件所属组是否与你的相同 -N 从文件上次被读取到现在是否被修改过 file1 -nt file2 file1是否比file2新 file1 -et file2 file1和file2是否相同文件的硬链接 ! 非 整数比较: -eq 等于 if [ "$a" -eq "$b" ] -ne 不等于 if [ "$a" -ne "$b" ] -gt 大于 if [ "$a" -gt "$b" ] -ge 大于等于 if [ "$a" -ge "$b" ] -lt 小于 if [ "$a" -lt "$b" ] -le 小于等于 if [ "$a" -le "$b" ] < 小于(在双括号中使用) (("$a" < "$b")) <= 小于等于(在双括号中使用) (("$a" <= "$b")) > 大于(在双括号中使用) (("$a" > "$b")) >= 大于等于(在双括号中使用) (("$a" >= "$b")) 字符串比较: = 等于 if [ "$a" = "$b" ] == 等于,与=等价 if [ "$a" == "$b" ] ==比较操作符在双中括号对和单中括号对中的行为是不同的. 1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真 2 [[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真. 3 [ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有效. 4 [ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真. != 不等号,将在[[ ... ]]结构中使用模式匹配 if [ "$a" != "$b" ] < 小于, 按照ASCII字符进行排序 if [[ "$a" < "$b" ]]"<" 使用在[ ]结构中的时候需要被转义 if [ "$a" \< "$b" ] > 大于, 按照ASCII字符进行排序 if [[ "$a" > "$b" ]] ">"使用在[ ]结构中的时候需要被转义 if [ "$a" \> "$b" ] -z 字符串为"null", 意思就是字符串长度为零 -n 字符串不为"null".