Shell脚本基础-if-then语句
1.if-then语句结构简单结构if command|conditionthencommandsfi带else结构if command|conditionthencommandselsecommandsfi多层嵌套if command|conditionthencommandselif command|conditionthencommandselif command|conditionthen
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退出编辑
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)