linux指令shell基操

变量表达式
test是shell程序中的一个表达式,通常用在流程控制for,while,until,if等结构中,用test命令去判断文件的的存在和性质,变量的相互关系
语法:test <表达式>
如果<表达式>成立,test返回0,反之返回一个非0值
字符串比较
两个数值的比较
逻辑操作,可以进行and/or,与其他条件联合使用
文件操作,例如文件是否存在文件的状态等

字符串比较
-z <字符串>比较字符串的长度是否为0如果等于0则返回0
-n:比较字符串的大小是否大于0,如果大于0则为是
<字符串1><字符串2>:比较两个字符串是否相同,相同的是,等号两边要有空格判断是=
<字符串1> != <字符串2>:比较两个字符是否相同,不同则为是

数字比较(lesser greater then no)
<数值表达式1><算符><数值表达式2>(算符两边都要有空格!!!)
-eq:两者相等返回0
-nq:两者相等返回1
-lt:前者小于后者
-le:前者小于或等于后者
-gt:前者大于后者
-ge:前者大于或等于后者

文件操作
文件测试表达式通常是为了测试文件的文件操作逻辑
-e 对象是否存在,存在返回值为0
-d 对象存在且为目录,则返回值为0
-f 对象存在且为文件,则返回0
-L:对象存在且为符号相连,则返回值为0
-s:对象存在且长度非0则返回值为0
-r:对象存在且可读,则返回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语句的选项比较多
1.if用法
If<判断令>;
then{命令清单1}
then{命令清单2}//case语句可以省略
Fi
此处判别令通常是上述test<表达式>,如果只写表达式,则用中括号括起来(中括号两边要有空格)
如果<判别令>返回0,(对与test命令来说,就是其后的表达式成立),则将执行then后命令清单;反之,则执行else后的命令
shell语句中的分号
分号是多个语句之间的分隔符,当只有一个语句的时候,末尾无需分号,最后一个语句后面也无需分号
eg
If[asda];then
等价于
If[asda]
Then
Else if
Then
Else
Fi
Fi

1.[]、=、-o两边要有空格,=也可以用==(作为赋值符号是不能写成
2、¥ANSWER,N两边写不写引号无所谓
3.
eg:使用if-then-else语句创建一个根据输入分数判断分数是否合格的shell程序文件名为ak
case条件语句(猜拳游戏)
if条件语句用于在两个选项中选定一个选项,而case条件选择为用户提供个根据字符量或变量的值从多个选项中选择一项方法。
语法
Case<变量>in
<字符串1>){<命令清单1>};; 注意有两个分号!!!!
……
<字符串n>){<命令清单n>};;
){其他命令};;
Esac
在case运算符中也可以使用shell的通配符(”
“,”?“,”[]“)
通常用“*”作为case命令的最后运算式以便在前面找不到任何相应的匹配项时执行“其它命令”
eg:
假如给出月份数字作为参数,就能编写一个回送月份名的脚本month。当给出的数字不在1-12之间时,将得出出错信息
eg:编写shell脚本cjpd,根据输入的学生的成绩判断等级。当成绩>=90时为A级;80<=成绩<90时为B级,70<=成绩<80时为C级,60<=成绩<70时为D级,当成绩<60时为E级.

1.for语句循环
For<循环变量>[in<循环变量取值集>]
do<命令清单>
done
如果for语句的后半部分被省略,则默认的<循环变量集>就是命令行参数
如果命令清单有多条命令,系统会依次执行
Expr–>求表达式变量的值一般用于整数值,也可以用于字符串
格式:expr expression(命令读入expression参数,计算它的值,然后将结果写入标准输出)
参数应用规则;
1、用空格隔开每一项;
2、用\(反斜杠)放在shell特定的字符面前
对包含空格和特殊字符的字符串要用引号括起来 expr 300 * 2
3.计算字符串函数
Expr length " lenth"
4.增量计数
说明:expr在循环中用于增量计算。现将变量初始化为0,然后循环加1,反引号的用法是命令替代 Loop=0 Loop=expr $Loop + 1………

while循环语句
While<判别令>
Do<命令清单>
done
当<判别令>返回0时(对于test命令,就是其后的表达式成立),则执行do后面的命令清单,然后再重做循环;否则退出循环
while控制常与shift命令结合使用
eg:编写一个shell脚本exist,用于判别其后用参数方式指定的一系列文件是否存在
使用while语句创建一个计算1-5的平方的shell
使用while语句创建一个输入exit退出的shell程序

until循环语句
until控制流与while控制流用法类似,但作用相反。
Until<判断令>
Do<命令清单>
Done
当<判别令>返回值非0值时,执行do后的命令清单,然后检查循环条件;当判别令返回0时,退出循环
break和continue
有时需要基于某些准则退出循环或跳过循环shell提供了两个命令实现功能
在shell中还可以利用所谓的“here文本”功能,即可在脚本文件中嵌入一段文档,作为脚本中所使用的命令的标准输入。
<命令><<!
!
其中“!”符号也可以使用“EOF”、“END”等替换
使用here文本,可以方便的将一些需要进行用户交互的命令放在shell脚本中

函数
所有函数在使用前必须定义,这意味着必须将函数定义在脚本开始的部分,直到shell解释器首次发现它时,才可以使用、向函数传递参数
响函数传递参数和向普通脚本传递参数一样,也用$1$2$3
从函数返回
当调用完函数,那么主程序可能需要得到函数的返回值,在函数中得到函数的返回值可以用如下方法
1.在函数末尾加return,从函数中返回,用最后的命令状态决定返回值
2、返回数值,如0或1格式return 0或者return 1
获取函数返回值
用户可以直接在程序调用完函数的时候获取它的返回值
sourse
sourse在linux中也被称为点命令,也就是一个符号(.)
使用sourse执行脚本时,脚本会在父进程中执行,各种操作都会在原本的bash内生效
sourse命令通常用于重新执行刚刚修改过初始化文件,使之立即生效,而不必注销并重新登录
用法:sourse文件名.文件名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小犟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值