Linux中shell脚本常用命令、条件语句与if、case语句

目录

一.shell脚本常用命令

1.1.echo命令

1.2.date命令

1.3.cal命令

1.4.tr命令

1.5.cut命令

1.6.sort命令

1.7.uniq命令

1.8.cat多行重定向

二.条件语句

2.1.条件测试(三种测试方法)

 2.2.正整数值比较

2.3.字符串比较 

2.4.逻辑测试 

三.if语句

3.1.使用格式

 3.2.if语句简单操作

 四.case语句

4.1.使用格式

4.2.case操作演练


一.shell脚本常用命令

1.1.echo命令

echo命令:打印内容在窗口中

(1)echo   -n   表示输出不换行

(2)echo   -e   表示输出转义符       

echo  -e 配合转义符

\b  退格,删除前一个字符。例如 echo   -e  "1234\b567" 则输出的是123567,4会被删除。

\c  抑制更多输出,\c后的内容全部不输出。例如 echo -e   "123\c456789"则输出的是123。

\n  输出换行,\n后的内容换行。例如 echo  -e  "123\n456  " 则输出123下一行输出456。

\t   相当于输出过程中按了一下tab键。

\f   输出换行但是光标位置不变。例如echo -e  "123\f456"则输入123下一行开头空出123的位置然后再输出456

1.2.date命令

date命令:查看时间,显示格式为,星期  月   日 时分秒   年

选项:

+%F    输出格式年-月-日,注意%在crontab定时中不能直接使用,需要转义

+%T    输出格式时:分:秒, 注意%在crontab定时中不能直接使用,需要转义

1.3.cal命令

cal命令:显示当月日历。

选项:

cal    12  显示本年整年日历

cal    某年  显示此年完整日历

1.4.tr命令

tr命令:替换内容

基本格式:tr    需要替换的内容     替换后的内容

例如:  tr  [a-z]     [A-Z]  遇见小写字母全部转为大写字母

选项:

-s    压缩功能。例如  tr  -s  aaa  输出a。

-d    删除功能。例如 tr  -d   abc 则输入abc123回车只会打印123。

-c    用字符串1中字符集的补集替换此字符集,例如 cat /dev/random | tr -dc [[:alnum:]]  | head -c 12。  /dev/random中是随机的字符内容         -dc 表示删除其他不需要内容   [[:alnum:]] 表示数字和字符      head   -c 12  表示取前12个字符,完整表达式意思为查看random文件并将非字符和数字内容删除然后取前12个字符,常用于生成随机密码。

1.5.cut命令

cut命令:提取想要的信息。

选项:

-d   指定分隔符   例如 cut  -d   ":"指定:为分隔符。

-f    选择第几列    例如  cut  -f3 取第三列,-f1,3取第1列和第三列,-f1-3取1-3列。

[root@zrsb data]$ touch cut.txt
[root@zrsb data]$ vim cut.txt
deng sen
ka zen
she she
he  he
le  le
[root@zrsb data]# cut -d ' ' -f 1 cut.txt 
deng
ka
she
he
le 

1.6.sort命令

sort命令:排序

选项:

-r 执行反方向(由上至下)整理

-n 按数字大小排序,默认第一列默认按字母顺序

-t 指定分隔符

-k 指定列 ,例如 -k3

1.7.uniq命令

uniq命令:去除连续的重复,一般配合sort使用

-c 显示每个重复出现的次数

split 命令:分隔大文件

-b 大小(例如1G) +要分隔文件名 加名称分隔指定名称,但是后面的xaa,xab不能指定,只能指定x。

1.8.cat多行重定向

cat   <<EOF

1

2

3

EOF 

打印123到屏幕

1.9.重定向

交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据

  • 标准输出:通过该设备向用户输出数据

  • 标准错误:通过该设备报告执行出错信息

重定向的意思就是 ,不通过标准输出到屏幕上,输出到你指定的位置

重定向输入     <

重定向输出   >    (会覆盖文件中的内容)

追加   >>  (将输出结果追加到指定的文件尾部)

混合输出    &>    (将标准输出、标准错误的内容保存到同一个文件中 )

 

二.条件语句

2.1.条件测试(三种测试方法)

①test命令测试

②[   ]测试(注意前后需要有空格)

③[[   ]]加强版[   ],测试支持通配符和正则表达式

三种测试方法选项:

-d 测试是否为文件夹

-f  测试是否为普通文件

-e 测试文件或目录是否存在

-a 测试文件或目录是否存在,不建议使用此选项。取反!=时echo  $?是错误的返回值。

-L 测试是否为软连接文件

-r 判断当前用户是否有读权限,根据实际情况返回结果,不是按ll显示的文件属性权限。

-w 判断当前用户是否有写权限,根据实际情况返回结果,不是ll显示的文件属性权限。

-x 判断当前用户是否有可执行权限,根据实际情况返回结果,root账户时其他用户有执行权限root账户也有,若其他账户没有执行权限则root也没有。

 2.2.正整数值比较

比较方法使用上述三种条件测试即可:

①test命令

②[  ] 注意前后空格

③[[   ]]注意前后空格

 选项:

-eq   比较第一个正整数是否等于(equal)第二个正整数

-ne   比较第一个正整数不等于(not equal)第二个正整数

-gt    比较第一个正整数是否大于(Greate than)第二个正整数

-lt     比较第一个正整数是否小于(Lesser than)第二个正整数

-ge   比较第一个正整数是否大于等于(Greate or equal )第二个正整数

-le    比较第一个正整数是否小于等于(Lesser or  equal)第二个正整数

2.3.字符串比较 

比较方法使用上述三种条件测试即可:

①test命令

②[ ] 注意前后空格

③[[  ]]注意前后空格

选项:

 =   等号前后字符串是否相等,注意前后需要空格。

!=   !表示取反的意思,等号前后字符串是否不相等,注意前后需要空格。

-z   判断字符串是否为空。

-n  字符是否存在。

2.4.逻辑测试 

①格式1:[ 表达式1 ]  操作符  [ 表达式2 ]

②格式2:命令1    操作符    命令2

操作符:

&&或-a  表示且的意思,前面表达式或命令1为真才会执行操作符后面的表达式2或命令2。一假则为假。

||或-o   表示或的意思,前面表达式1或命令1为真则整个表达式为真,前面表达式为假或命令为假才会执行后面的表达式2或命令2 。一真则为真。

!   逻辑否。
 

三.if语句

3.1.使用格式

if   [条件判断]

then   (条件1成立则走then)

[执行命令]

elif  [条件判断2 ]    (可添加多个elif )

then (条件2成立则走then)

[执行命令]

else    (所有条件不成立则走else)

[执行命令]

fi   (if结束语句)

 3.2.if语句简单操作

学生输入分数判断自己的成绩是优秀(91-100)、良好(81-90)、及格(60-80)、不及格(小于60)

vim ll.sh                          #创建脚本文件,注意必须.sh结尾
脚本内容:
#!/bin/bash                       #脚本解释器
read -p  "请输入你的成绩进行判断(0-100): " cj  #读取用户输入的内容为变量cj
if [ $cj -ge 91 -a  $cj -le 100   ]       #条件1:如果cj大于等于91且小于等于100则执行then 
then                                        #key符合条件1执行此then
echo "你的成绩为优秀"
elif [ $cj -ge 81 -a $cj -le 90    ]      #条件2:如果cj大于等于81且小于等于90则执行then
then                                        #key符合条件2执行此then
echo "你的成绩为良好"
elif [ $cj -ge 60 -a $cj -le 80    ]      #条件3:如果cj大于等于60且小于等于80则执行then
then                                        #key符合条件3执行此then
echo "你的成绩为及格"
elif [ $cj -lt 60  ]                       #条件4:如果cj大于等于60且小于等于80则执行then
then                                        #key符合条件4执行此then
echo "你的成绩为不及格"                  
else                                        #key不符合上述任何条件则执行else
echo "输入错误,请输入0-100的正整数"
fi                                          #结束语fi
chmod +x a.sh                     #脚本添加执行权限
bash   a.sh                       #使用shell执行脚本,也可使用路径方式执行

 四.case语句

4.1.使用格式

case   变量引用     in

PAT1)    符合条件1执行分支1的命令,PAT1可以使用通配符

分支1命令

;;   每个分支结束的固定格式

PAT2)    符合条件1执行分支2的命令,PAT2可以使用通配符

分支2命令

;;   每个分支结束的固定格式,可以有多个分支

*) 不符合其他任意分支的默认分支

默认分支命令

;; 分支结束的固定格式

esac   case语句结束标志

4.2.case操作演练

vim case.sh     #创建case.sh脚本
case.sh脚本内容:
#!/bin/bash
read -p "请输入你的分数" ak     #读取用户输入内容为变量ak

case $ak in                    #case判断 变量$ak
100)                           #若$ak等于100则执行100)内容
echo "$ak 你太tm优秀了"
;;                             #每个分支结束符
[89][0-9])                   
echo "$ak 表现不错,菜鸟"
;;
[67][0-9])
echo "$ak 你及格了,小丑"
;;
[0-9]|[1-5][0-9])
echo "$ak 你不及格,废物"
;;
*)
echo "输入有误"  
esac                           #case语句结束标志

chmod  +x  case.sh             #脚本添加可执行权限
bash       case.sh             #通过shell执行脚本  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值