Shell编程进阶 1.6 if判断的几种用法
针对文件和目录的逻辑判断
touch 1.txt
if [ -f 1.txt ]; then echo ok;fi
-f 判断1.txt是否是文件且是否存在,成立输出ok
if [-d /tmp/ ]; then echo ok;fi
-d 判断tmp是否是目录且存在,成立输出ok
-r,w,x 是否可读写执行
vim if2.sh
#!/bin/bash read -p "Please input a number:" n m=`echo $n|sed 's/[0-9]//g'` if [ -n "$m" ] then echo "The character you input is not a number,please retry." else echo $n fi
read -p 给出提示符,赋值给n
变量m=$n然后$n的0-9用空格代替。
如果$m不是空格
输出 The character you input is not a number,please retry.
否则输出 $n
-z和-n相反
if grep -q '^wangshaojun:' /etc/passwd; then echo "wangshaojun exist"; fi
grep -q 不输出结果,只做判断条件。匹配到即成立。
多个判断条件
if [ -d /tmp/ ] && [ -f 1.txt ] ; then echo ok;fi
if [ -d /tmp/ ] && [ -f 1.txt ] && [ -d /usr/ ] ; then echo ok;fi
if [ -d /tmp/ -a -f 1.txt ] ; then echo ok;fi
-a and
同时成立即输出ok
if [ -d /tmp/ ] || [ -f 1.txt ] ; then echo ok;fi
if [ -d /tmp/ -o -f 1.txt ] ; then echo ok;fi
-o or
一个成立即ok