文章目录
一、前期准备
1、查看本机bash
bash
which bash
之后编写脚本时,第一行要写入此位置。
2、编辑脚本
bash
vi 脚本名 #名字可以随便其,后缀为.sh
进入后,点击 i ,进入编辑模式,开始编写内容。
编写完成之后,点击esc,之后输入 :wq,保存并退出。
二、 判断结构
Shell提供的常用判断结构:if、if/else、if/elif/else 、case
1、if结构
格式:
bash
if 判断条件
then
命令语句
fi
或
bash
if 判断条件; then
命令语句
fi
若判断条件为真,执行命令语句。
例,编写一个脚本jyan.sh,判断在当前目录下是否存在名为name.yaml的文件。
(注:-e 判断文件是否存在)
bash
#脚本内容
#!/usr/bin/bash
if [ -e name.yaml ]; then
echo "file exsit!!!" #若文件存在,打印file exsit!!!
fi
修改脚本权限为可执行。
bash
chmod +x jyan.sh
2、if/else结构
格式:
bash
if 判断条件
then
命令语句1
else
命令语句2
fi
例,编写脚本jyan2.sh,读取输入的字符串,判断字符串为空,输出为空,若不为空,输出字符串。(-z 判断字符串是否为空)
bash
#脚本内容
#!/usr/bin/bash
read str #读取字符串
if [ -z "$str" ]; then
echo "str is null" #若字符串为空,打印
else
echo $str
fi
3、if/elif/else结构
格式:
bash
if 判断条件; then
命令语句1
elif 判断条件; then
命令语句2
......
else
命令语句3
fi
例,编写脚本jyan3.sh,读取学生成绩,判断级别。
bash
#脚本内容
#!/usr/bin/bash
read score #读取
if [ $score -lt 0 -o $score -gt 100 ]; then #判断分数是否在0~100内
echo error #不在,打印error
elif [ $score -ge 90 ]; then #大于等于90
echo A
elif [ $score -ge 80 ]; then #大于等于80
echo B
elif [ $score -ge 70 ]; then #大于等于70
echo C
else #70以下
echo D
fi
4、case结构
格式:
bash
case "$var" in
var1)
命令语句1;;
var2)
命令语句2;;
var3)
命令语句3;;
......
*)
命令语句n;;
esac
var分别与var1、var2、var3......进行比较,若相匹配,执行语句,后跳转到esac结束。
若未匹配成功,执行*后语句。
bash
#!/usr/bin/bash
read day
case "$day" in
1)
echo 2;;
2)
echo 3;;
*)
echo error;;
esac
三、循环结构
break,continue与在C语言中用法相似,跳出循环。
break:直接退出循环。
continue:退出本次循环,执行下一次循环。
1、for循环
格式:
bash
for var in 读取列表
do
命令语句
done
do ......done之间的是循环体,循环的时候,会从读取列表中依次读取一个数赋给var,直到列表中的值被读取完。
例,编写脚本,循环输出1~5.
bash
#!/usr/bin/bash
for var in 1 2 3 4 5 #或 for var in{1..5}
do
echo $var
done
2、while循环
格式:
bash
while 判断条件 #当条件为假时,退出循环
do
命令语句
done
例,循环输出1~5
bash
#!/usr/bin/bash
num=1
while (( $num <=5 ))
do
echo $num
let num++ #使用let命令,使num自增
done
3、until循环
格式:
bash
until 判断条件 #当条件为真时,退出循环
do
命令语句
done
其用法与while相似,只是判断条件有所不同。
四、谢谢观看!
参考书籍:《Linux系统管理与自动化运维》黑马程序员/编著。