1.if-then语句结构

简单结构

if command|condition
then
	commands
fi

带else结构

if command|condition
then
	commands
else
	commands
fi

多层嵌套


if command|condition
then
	commands
elif command|condition
then
	commands
elif command|condition
then
	commands
else
	commands
fi

eg:

a=10
b=20
if (( "$a" < "$b" ))
then
    echo "a<b"
elif (( "$a" > "$b" ))
then
    echo "a>b"
else
    echo "a=b"
fi

2.比较中使用(),(()),[],[[]],{}的含义与用法

首先你要理解 if 后面跟的是一个命令,而不是一个值,跟括号没啥关系。
整个语句的执行过程是先运行if后面那个命令,如果返回0就执行then后面的语句,否则执行else后面的语句
然后(...),((...)),[[...]]还有{...}是语法的一部分,
( ... )表示在子shell里面执行括号里面的命令。$( ... )表示 ... 部分运行的输出,通常用于a=$(...)这样的赋值语句。
(( ... ))表示括号里面的东西是在进行数字运算而不是当成字符串,以便你能够用+、-、*、/、>、<这些算术运算符,同样$(( ... ))就表示 ... 部分计算的结果。
[[ ... ]]表示里面进行的是逻辑运算,以便你可以用&&、||这些逻辑运算符。
$[ ... ],这个是已经被废弃的语法,跟$( ... )差不多。
至于[ ... ],它其实是一个程序 /usr/bin/[,相当于/usr/bin/test,后面多的那个]只是为了对称好看而已,所以[ 后面要有空格。

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

具体内容参考:https://www.cnblogs.com/rookieeee/p/12614858.html

3.读取文件练习

-e 存在,-d 文件夹,-f 文件,-s  非空

echo 'qing shuru wenjianming'
read filename
if [ -e $filename ]
then
	echo 'file exists'
fi

if [ -d $filename ]
then
	echo 'file is directory'
elif [ -f $filename ]
then
	echo 'file is file'
fi

if [ -s $filename ]
then
	echo 'file is not empty'
fi

判断一个文件是否是文件,如果是,判断有无写权限,有的话写入东西

echo 'please input file name:'
read filename
if [ -f $filename ]
then
    if [ -w $filename ]
    then
         echo 'qing shuru wenzi:'
         cat >>$filename
    else
        echo 'file cannot write'
    fi
else
    echo '$filename is not a file'
fi

按ctrl+d退出编辑

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐