关shell if语句的用法,if支持多条command以及函数执行的返回值判断,本文整理了一些shell if语句的例子。 shell if语句: if 表达式: if 条件 then command else command fi 另一种写法: [ -f "~/test.sh" ] && echo "test.sh is ecisted" shell 的 if 与 C 语言 if 的区别: 【if xx then】 shell then是xx执行结果为0执行,c是执行结果不为0执行 【if [i -ne 0]】【if (i)】 整数为0判断,shell与c 【if [ str ]】【if (strlen == NULL || strlen(str) == 0)】字符串为空判断,shell与c if特性: if支持多条command以及函数执行的返回值判断 if command == command+if $? ------- if [ $? -eq 0 ] if的条件表达式: 文件: if [ -f file ] 文件存在判断 if [ -d ... ] 目录存在判断 if [ -s file ] 文件存在且不为空判断 if [ -r file ] 文件存在可读判断 if [ -w file ] 文件存在可写判断 if [ -x file ] 文件存在可执行判断 整数: if [ a -eq b ] a==b判断 if [ a -ne b ] a!=b判断 if [ a -ge b ] a>=b判断 if [ a -gt b ] a>b判断 if [ a -le b ] a<=b判断 if [ a -lt b ] a<b判断 字符串: if [ $a = $b ] 字符串a等于字符串b if [ $a != $b ] 字符串a不等于字符串b if [ -n $a ] 字符串a非空 if [ -z $a ] 字符串a为空 if [ $a ] 字符串a非空 表达式需要带$符号 -eq -ne -ge -gt -le -lt 只能用于整数 =用于等于判断时需要两边加空格 shell没有<或者>,只有-eq -ge -le -ht -lt 逻辑非!,逻辑与 -a,逻辑或 -o shell if的简单语法。 shell if 简单格式 shell if有下面几种用法: if condition; then commands; fi if condition; then commands; elif condition; then commands else commands fi [condition] && action; # 如果condition为真,则执行action [condition] || action; # 如果condition为假,则执行action 条件 算术比较 -eq,-lt,-ge,-le 文件测试 -f,-x,-d,-e,-c,-b,-w, -r,-l 字符串比较 >, <, -z, -n shell中条件判断if语句参数: shell [ -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在FILE2之前被修改, 或者如果 FILE1存在但是FILE2不存在则为真。 [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。 [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。 [ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。 [ -z STRING ] “STRING” 的长度为零则为真。 [ -n STRING ] or [ STRING ] “STRING” 的长度为非零则为真。 [ STRING1 == STRING2 ] 如果2个字符串相同 [ STRING1 != STRING2 ] 如果字符串不相等则为真。 [ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面,则为真。 [ STRING1 > STRING2 ] 如果 “STRING1”字典排序在 “STRING2”后,则为真。 [ ARG1 OP ARG2 ] “OP”可以为-eq, -ne, -lt, -le, -gt or -ge. (责任编辑:IT) |