笔记10

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

用在哪些方面:
(1).字符串比较
-------->字符串长度的比较------------------------------------------------
-z<字符串>----->比较字符串的长度是否为0,如果等于0,则为是,返回值为0
-n<字符串>----->比较字符串的长度是否大于0,如果大于0,则为是,返回值为0
在这里插入图片描述

-------->两个字符串的比较
<字符串1>=<字符串2>:比较两个字符串是否相同,相同返回值为0(等号两边要有空格,则判断使用==)((格式—>test $str1 = $str2))
<字符串1>!=<字符串2>:比较两个字符串是否相同,不同则为0(格式—>test $str1 != $str2)
在这里插入图片描述

(2).两个数值的比较
-------->数字比较(数值上的比较)-----------------------
<数值表达式1><算符><数值表达式2>(算符两边要有空格)
-eq:两者相等—>如果两个表达式相等返回值为0 否则返回值为1
-ne:两者不等—>如果两个表达式不相等返回值为0 否则返回值为1
-lt:前者小于后者---->如果是返回值为0
-le:前者小于或者等于后者------>如果是返回值为0
-gt:前者大于后者------>如说是返回值为0,否则返回值为1
-ge:前者大于或等于后者------>如说是返回值为0,否则返回值为1

eg:int1=22
int2=89
tset $int1 -eq $int2
echo $?
—>返回值 1

(3).逻辑操作,可以进行and/or,与其他条件联合使用
---------->逻辑测试----------------------------------
常用于逻辑测试的<表达式>有:
!<表达式>------> <表达式>不成立
<表达式1>-a<表达式2>---------> <表达式1>与<表达式2>同时成立
<表达式1>-o<表达式2>---------> <表达式1>或<表达式2>成立

(4).文件操作,例如文件是否存在,文件的状态等
---------->文件操作----------------------------------
文件测试表达式通常是为了测试文件的文件操作逻辑
-e:对象(文件)是否存在,存在返回值为0 不存在为0
-d:对象存在且为目录,则返回值为0
-f:对象存在且为文件,则返回值为0
-L:对象存在且为符号链接,返回值为
-r:对象存在且可读,则返回值为0
-s:对象存在且长度非0,则返回值为0
-w:对象存在且可写,则返回值为0
-x:对象存在且可执行,则返回为0
!:测试条件的否定。(与上述的符号用空格给隔开)

eg:test -e/szj3/0318
echo $?

在这里插入图片描述

2.shell流程控制语句

条件控制:if case等结构
循环控制:for while until 等结构

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

(1).if条件语句
语法:
if<判别令>;-------->判别令通常为test表达式
then{命令清单1}
then{命令清单2} //else语句可以省略
fi

***注:***此处判别令通常是上述test<表达式>,如果只写表达式,则用中括号括起来(中括号两边要有空格)
如果<判别令>返回0(对于test命令来说,就是其后的表达式成立),则将执行then后的命令清单;反之执行else后的命令

shell语句中的分号
分号是多个语句之间的分隔符,当只有一个语句的时候,末尾无需分号,最后一个语句后面也无需分号。

注:
1.[],=,-o,两边要有空格, =也可以用==(=作为赋值符号时不能写成==)
2.$ANSWER ,N两边写不写引号无所谓
3.使用if-then-else语句创建一个根据输入分数判断分数是否及格的程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2).case条件语句
if条件语句用于在两个选项中选定一个选项,而case条件选择为用户提供了根据字符串或者变量的值从多个选项中选择一项方法。
语法:
case<变量>in
<字符串1>){<命令清单1>};;------------>(其中(:子shell开始
):子shell结束)(特殊符号的意思)

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

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

***注:*在case运算式中也可以使用shell的通配符(“”,“?”,“[]”)
通常用“
”作为case命令的最后运算式以便在前面找不到任何相应的匹配项执行时“其他命令”的命

(3).for循环
for<循环变量>[in<循环变量取值集>]
do<命令清单>
done
如果for语句的后半部分被省略,则默认的<循环变量取值集>就是命令行参数集
如果命令行清单有多条命令,系统会一次执行

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值