Linux学习8

在这里插入图片描述

变量表达式

test是shell程序中的一个表达式,通常用在流程控制for,while,until,if,等结构中,用test命令去判断文件的存在与性质,变量的相互关系
语法:test<表达式
如果<表达式>成立,test返回0,反之返回一个非0值

字符串比较

两个数值的比较
逻辑操作,可以进行and/or,与其他条件联合使用
文件操作,例如文件是否存在文件的状态等

-z<字符串>比较字符串的长度是否为0 若为0,则返回0;
-n<字符串>比较字符串的长度是否大于0 若大于0,则返回0;
在这里插入图片描述
<字符串1>=<字符串2:>:比较两个字符串是否相同,相同为是,等号两边如有空格,判断用==
在这里插入图片描述
<字符串1>!=<字符串2:>:比较两个字符串是否不相同,不相同为是,等号两边如有空格,判断用==

在这里插入图片描述
在这里插入图片描述

数字比较

<数字表达式><算符><数值表达式2>(算符两边要有空格)
-eq:两边相等,相等为0
在这里插入图片描述
-ne:两边不等,不等为0
在这里插入图片描述
-lt:前者小于后者,小于为0
在这里插入图片描述
-le:前者小于或等于后者,满足为0
在这里插入图片描述
-gt:前者大于后者,满足为0
在这里插入图片描述
-ge:前者大于或等于后者,满足为0
在这里插入图片描述

文件操作

文件测试表达式通常是为了测试文件的文件操作逻辑
-e:对象是否存在,存在返回值为0
(随便打了一个路径加文件名,正常情况下不存在)
在这里插入图片描述
-d:对象存在且为目录,则返回值为0
在这里插入图片描述
-f:对象存在且为文件,则返回值为0
在这里插入图片描述
-L:对象存在且为符号链接,则返回值为0

-r:对象存在且可读,返回0

-s:对象存在且长度非0,返回0

-w:对象存在且可写,返回0

-x:对象存在且可执行,返回0
在这里插入图片描述
!:测试条件的否定(与上述的符号用空格给隔开)

逻辑测试

常用于逻辑测试的 <表达式>有:
!<表达式>:<表达式>不成立

<表达式1>-a<表达式2>:<表达式1>与<表达式2>同时成立

<表达式1>-o<表达式2>:<表达式1>或<表达式2>成立

shell流程控制语句
条件控制:if,case等结构

循环控制:for,while,until等结构

在shell中,条件判断语句可以使用if条件语句和case条件语句,case语句的选项比较多

if条件语句

用法:
if<判别令>;
then(命令清单1)
then(命令清单2)//else语句可以省略
fi
//判别令通常是test表达式,如果只写表达式,则用中括号括起来(中括号两边要有空格) 如果<判别令>返回0(对于test命令来说,就是其后的表达式成立),则将执行then后的命令清单:反之,则执行else后的命令;

shell语句中的分号

分号是多个语句之间的分隔符,当只有一个语句的时候,末尾无需分号,最后一个语句后面也无需分号;
eg
if [asdafcdvcds];then

if [asdafcdvcds]
then
if…
then…
else if …
then …
else is…
then…
else…

fi
fi
fi

1,【】,=,-o两边要有空格,=也可以用==(=作为赋值符号时不能写成==)
2,$ANSWER ,N两边写不写引号无所谓
在这里插入图片描述
eg:
使用if then else 语句创建一个输入分数判断分数是否及格的shell程序文件名为ak
在这里插入图片描述
在这里插入图片描述
语法:
case<变量>in
<字符串n>){<命令清单1>};;

<字符串n>){<命令清单n>};;
*){其他命令};;
esac

在case运算式中也可以使用shell的通配符(“*”,“?”,“【】”)

通常用“*”作为case命令的最后运算式以便在前面找不到任何相应的匹配项时,执行“其他命令”的命令

eg::假如给出月份数字作为参数,就能编写一个会送月份名的脚本month。当所给出的数字不在1和12之间时,将得到错误信息提示

#!/bin/bash
#filename :month
read month
case $month in
    1) echo January;;
    2) echo Febuary;;
    3) echo Marth;;
    4) echo April;;
    5) echo May;;
    6) echo June;;
    7) echo July;;
    8) echo August;;
    9) echo September;;
    10) echo October;;
    11) echo November;;
    12) echo December;;
    *) echo error;;
esac

在这里插入图片描述
eg:编写shell脚本cjpd,根据输入的学生成就判断等级。当成绩>=90时为A级,80到90时为B级,70到80时为C级,60到70为D级,小于60时为E级

#!/bin/bash
#filename:zuoye    
echo -n "enter your grades:"   
read grade
if [ $grade -ge 0 -a $grade -le 59 ];then   
    echo "E"
elif [ $grade -ge 60 -a $grade -le 69 ];then
    echo "D" 
elif [ $grade -ge 70 -a $grade -le 79 ];then
    echo "C" 
elif [ $grade -ge 80 -a $grade -le 89 ];then
    echo "B" 
elif [ $grade -ge 90 -a $grade -le 100 ];then
    echo "A" 
else
    echo "error" 
fi

for语句循环
for<循环变量>[in<循环变量取值集>]
do<命令清单>
done
注意:
如果for语句的后半部分被省略,则默认的<循环变量取值集>就是命令行参数集
如果命令清单有多余的命令,系统会依次执行。

expr:求表达式变量的值,一般用于整数求值
格式: expr +表达式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值