shellif多个条件_shell脚本⾃学笔记
⼀、 什么是Shell脚本
shell脚本并不能作为正式的编程语⾔,因为它是在linux的shell中运⾏的,所以称为shell脚本。事实上,shell脚本就是⼀些命令的集合。
假如完成某个需求需要⼀⼝⽓输⼊10条命令,对于简单的命令,我们可以直接在shell窗⼝中输⼊,但如果是⽐较长且复杂的命令,⼀次⼀次敲就会显得很⿇烦。我们可以把这10条命令都记录到⼀个⽂档中,然后去调⽤⽂档中的命令,这样就能⼀步操作完成,以后再遇到这个需求的时候也只需要调⽤这个⽂档就⾏了,这个⽂档就是shell脚本,只是这个⽂档有它特殊的格式。
shell脚本能帮我们很⽅便地管理服务器,我们可以指定⼀个任务计划,定时去执⾏某个shell脚本以满⾜需求。
⼆、shell脚本的创建和执⾏
下⾯来编写第⼀个脚本:
vim first.sh #写⼊下⾯内容
1
#!/bin/bash
## This is my first shell script.
## Writen by lzx 2018-7-27
date
echo "Hello World!"
shell脚本通常都以.sh作为后缀名,不是说不加.sh的脚本不能运⾏,只是⼤家的习惯,这样也⽅便辨识。
上⾯,第⼀⾏要以#!/bin/bash开头,表⽰该⽂件使⽤的是bash语法,不设置该⾏也可以执⾏,但不符合规范。
#表⽰注释,后⾯跟⼀些该脚本的相关注释内容,以及作者、创建⽇期或版本等。注释可以省略,但不建议省略,因为我们的记忆⼒有限,没有注释我们⾃⼰都不知道⾃⼰写的脚本是⽤来⼲什么的、是什么时候写的。建议从⼀开始就要养成写脚本的良好习惯,⽅便⾃⼰也⽅便他⼈。
下⾯来执⾏上⾯的脚本:
# sh first.sh #⽤sh命令来执⾏
2018年 07⽉ 27⽇星期五 09:42:54 CST
Hello World!
还有⼀种执⾏⽅式:
# ./first.sh #./表⽰当前⽬录
-bash: ./first.sh: 权限不够
# chmod +x first.sh #给执⾏权限
# ./first.sh
2018年 07⽉ 27⽇星期五 09:44:09 CST
Hello World!
使⽤上⾯⽅法来执⾏shell脚本的前提是脚本本⾝有执⾏权限,所以需要给脚本加⼀个x权限。
另外,使⽤sh命令来执⾏脚本时,可以加-x选项来查看脚本的执⾏过程:
# sh -x first.sh
+ date
2018年 07⽉ 27⽇星期五 09:49:22 CST
+ echo 'Hello World!'
Hello World!
三、命令date
# date #显⽰当前时间
四、Shell脚本中的变量
shell脚本中的变量可以是⼀个数值、⼀个命令或者⼀个路径。定义变量的格式为:变量名=变量的值,在脚本中引⽤变量的值时需要加上符号$。
五、数字运算
在脚本中进⾏数字运算,也会⽤到变量。
下⾯再⾃定义⼀个脚本:
#! /bin/bash
## For get the sum of two numbers.
## Writen by lzx 2018-7-27
a=1
b=2
sum=$(($a+$b))
echo "$a+$b=$sum"
1+2=3
数学计算要⽤((…))括起来,并且前⾯要加上符号$。
六、获取⽤户输⼊
read命令⽤于和⽤户交互,它把⽤户输⼊的字符串作为变量值,⽤法如下:
#!/bin/bash
## Using 'read' in shell script.
## Writen by lzx 2018-7-27
read -p "Please input a number:" x
read -p "Please input another number:" y
sum=$[$x+$y]
echo "The sum of two numbers is:$sum"
Please input a number:5
Please input another number:11
The sum of two numbers is:16
七、if语句
不带else
具体格式如下:
if 判断语句;then
command
fi
下⾯⾃定义⼀个脚本:
#!/bin/bash
read -p "Please input your score: " a
if ((a<60));then
echo "You didn't pass the exam."
fi
上⾯出现了((a<60))这样的形式,表⽰⾥⾯的是⼀个数学运算,(( ))这是shell脚本特有的格式,只⽤⼀个⼩括号或不⽤括号都会报错,要记住这个格式。
带有else
具体格式如下:
if 判断语句
then
command
else
command
fi
带有elif
具体格式如下:
if 判断语句1;then
command
elif 判断语句2;then
command
else
command
fi
判断数值⼤⼩除了可以使⽤((
))的形式外,还可以使⽤[],但不能使⽤>、<、=这样的符号了,要使⽤-lt(⼩于)、-gt(⼤于)、-le(⼩于或等于)、-ge(⼤于或等于)、-eq(等于)、-ne(不等于)。
⼋、和⽂档相关的判断
shell脚本中if还经常⽤于判断⽂档的属性,⽐如判断是普通⽂件还是⽬录,判断⽂件是否可读、写、执⾏权限等。
if 常⽤的选项有以下⼏个:
-e :判断⽂件或⽬录是否存在
-d :判断是不是⽬录以及是否存在
-f :判断是不是普通⽂件以及是否存在
-r :判断是否有读权限
-w :判断是否有写权限
-x :判断是否有执⾏权限
具体格式如下:
if [ -e filename ]
then
command
fi
⽰例如下:
# if [ -d /home/ ]; then echo ok; fi
ok
# if [ -f /home/ ]; then echo ok; fi
/home/是⽬录⽽⾮⽂件,所以在判断它是否为⽂件时并不会显⽰ok。
九、case逻辑判断
在shell脚本中,除了使⽤if来判断逻辑外,还可以使⽤case。
具体格式如下:
case 变量 in
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
command
;;
esac
下⾯⾃定义⼀个脚本:
#!/bin/bash
read -p "Input a number: " n
a=$[n%2]
case $a in
1)
echo "The number is odd." # odd:奇数
;;
0)
echo "The number is even." # even:偶数
;;
*)
echo "It's not a number!"
esac
case脚本常⽤于编写系统服务的启动脚本。
⼗、for循环
具体格式如下:
for 变量名 in 循环的条件
do
command
done
下⾯⾃定义⼀个脚本:
#!/bin/bash
for i in `seq 1 5`; do # seq 1 5 表⽰从1到5的⼀个序列
echo $i
done
上⾯,循环的条件是引⽤系统命令的执⾏结果seq 1 5,但必须⽤反引号括起来。
⼗⼀、while
⽇常运维⼯作中,也会经常⽤while循环来编写死循环的脚本,⽤于监控某项服务。
具体格式如下:
while 条件
do
linux循环执行命令脚本 command
done
下⾯⾃定义⼀个脚本:
#!/bin/bash
a=6
while [ $a -ge 1]
do
echo $a
a=$[$a-1]
done
另外,可以⽤⼀个冒号:代替循环条件,这样就可以做到死循环。
⼗⼆、exit
exit,它作⽤的范围更⼤,直接退出整个shell脚本
⽬前这些是我们常⽤的,毕竟咱不是搞运维的,更多的是⽤它写⼀写简单的脚本来存储命令。下⾯我将以px4安装脚本为例说明shell脚本使⽤:
相关视频学习资料可⾃⾏观看
shell脚本快速⼊门
linux基础
Linux 基础_
- 嵌⼊式/物联⽹-快速上⼿linux -
- 1⼩时全⾯认识Linux⽹络经典案例 -
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论