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

原文地址:https://www.cnblogs.com/wangshaojun/p/5093924.html