大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn
文章目录
第6章Shell脚本编程初步
6.1脚本入门
6.1.1创建脚本
步骤:
- 编写shell脚本
- chmod +x shellfile:使脚本文件获得执行权限
- ./shellfile:执行脚本文件
6.1.2调试和运行脚本
- -n:读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
- -v:一边执行脚本,一边将执行过的脚本命令输出到屏幕上显示
- -x:提供跟踪执行信息,将执行的每一条命令与结果一次打印出来
- -e:若有一条命令失败就立即退出
- -u:置换时把未设置的变量看作出错
- -c:使Shell解析器从字符串而非文件中读取并执行命令
步骤
- 编写shell脚本
- 使脚本文件获得执行权限
sh -n shellfile
:执行-n命令,若正常则无提示。
注意: 在定义变量时需要注意一下命令规则。
- 定义变量时,变量名不加”$“符号;
- 变量名和等号之间不能有空格;
- 首字符必须是字母;
- 中间不能有空格,可以使用下划线(_);
- 不能使用标点符号;
- 不能使用bash里的关键字;
6.2条件结构化命令
6.2.1使用case语句
#!/bin/bash
echo "PLEASE INPUT YOUR SCORE"
read SCORE
SCORE=$((SCORE/10))
case $SCORE in
6)
echo "YOUR SCORE IS PASSED"
;;
7)
echo "YOUR SCORE IS GOOD"
;;
8)
echo "YOUR SCORE IS GREAT"
;;
9|10)
echo "YOUR SCORE IS EXCELLENT"
;;
*)
echo "YOU FAIL YOU EXAM"
;;
esac
6.2.2使用if语句
-
if-elif-else
#!/bin/bash echo "PLEASE INPUT A NUMBER" read NUM if [ "$NUM" -gt "0" ] # 双引号可省略 then echo "NUMBER IS GREATER THAN ZERO" elif [ "$NUM" -lt "0" ] then echo "NUMBER IS LESS THAN ZERO" else echo "NUMBET IS EQUAL WITH ZERO" fi
-
if-nested-if
#!/bin/bash echo "PLEASE INPUT A NUMBER" read NUM if [ "$NUM" -eq "0" ] # 双引号可省略 then echo "NUMBET IS EQUAL WITH ZERO" else if [ "$NUM" -gt "0" ] then echo "NUMBER IS GREATER THAN ZERO" else echo "NUMBER IS LESS THAN ZERO" fi fi
-
if条件下使用test命令,用于检查某个条件是否成立,其功能与方括号[]类似
#!/bin/bash read NUM if test "$((NUM%2))" -eq "1" then echo "the number is an odd number" else echo "the number is a even number" fi
6.3循环结构化命令
6.3.1使用for
-
列表for循环
#!/bin/bash sum=0 for i in {2..200..2} do sum=$(($sum+i)) done echo "sum=$sum"
#!/bin/bash for file in $(ls -lt|awk '{print $9}') # 结合管道使用 do echo "file: $file" done
-
不带列表for循环
#!/bin/bash for 条件 do 语句 done
-
类C风格for循环
#!/bin/bash sum=0 for((i=2;i<=200;i=i+2)) do let "sum = sum + i" done echo "The Sum is:"$sum
6.3.2使用while
#!/bin/bash
num=1
while [ $num -le 10 ] # []两侧一定要有空格,否则不能运行
do
echo $num
num=$(($num+1))
done
#!/bin/bash
read i
while [ $i -lt 101 ] && [ $i -gt 0 ]
do
if [ $i -eq 29 ]
then
echo "you are right"
exit 0
elif [ $i -lt 29 ]
then
echo "you should try a bigger one"
else
echo "you should try a smaller one"
fi
read i
done
6.3.3使用until,即do-while
#!/bin/bash
num=1
until ((num>10)) # 符合条件才退出循环
do
echo $num
((num++)) # 或者:num=$(($num+1))
done
6.3.4使用break和continue
-
break
#!/bin/bash i=25 while [ $i -gt 0 ] do echo $i ((i++)) if [ $i -eq 29 ] then echo $i echo "you are right" break fi done
-
continue
#!/bin/bash i=25 while [ $i -lt 31 ] && [ $i -gt 0 ] do ((i++)) if [ $i -eq 29 ] then continue fi echo $i done
2020年12月16日更
大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn