Shell编程学习笔记二(条件判断、流程控制)

1.条件判断

(1)基本语法

[ condition ](注意 condition 前后要有空格)
#非空返回 true,可使用$?验证(0 为 true,>1 为 false)

(2)基本使用

[ shell ] 返回 true
[] 返回false
[ condition ] && echo OK || echo NotOK 条件满足,打印OK,否则打印NotOK

(3)常用判断条件

  • 两个整数的比较
    = 字符串比较
    -lt 小于
    -le 小于等于
    -eq 等于
    -gt 大于
    -ge 大于等于
    -ne 不等于
  • 按照文件权限进行判断
    -r 有读的权限 [ -r 文件 ]
    -w 有写的权限
    -x 有执行的权限
  • 按照文件类型进行判断
    -f 文件存在并且是一个常规的文件
    -e 文件存在
    -d 文件存在并是一个目录

(4)应用实例

  • “ok"是否等于"ok”
    在这里插入图片描述
  • 23 是否大于等于 22
    在这里插入图片描述
  • /root/install.log 目录中的文件是否存在
    在这里插入图片描述
  • 判断文件 judeg.sh是否有执行的权限
    在这里插入图片描述

2.流程控制

(1)if判断

  • 基本语法
if [ 条件判断式 ];then
  程序
fi

或者

if [ 条件判断式 ]
then
  程序
elif [条件判断式]
then
  程序
fi

注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2) 推荐使用第二种方式

  • 应用实例
    编写一个 shell 程序,如果输入的参数,大于等于 60,则输出 “及格了”,如果小于 60,
    则输出 “不及格”
    在这里插入图片描述

(2)case语句

  • 基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
 
;;
esac
  • 应用实例
    当命令行参数是 1 时,输出 “周一”, 是 2 时,就输出"周二", 其它情况输出 “other”
    在这里插入图片描述

(3)for循环

  • 基本语法
for 变量 in 值 123do
  程序
done

或者

for (( 初始值;循环控制条件;变量变化 ))
do
  程序
done
  • 应用实例
    1)打印命令行输入的参数 【会使用到$* $@】
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
    从这里能看出 $* 是把输入参数当做一个整体,而$@是把输入参数独立处理
    2)把从 1 加到 100 的值输出显示
    在这里插入图片描述

(4)while循环

  • 基本语法
while [ 条件判断式 ]
do
  程序
done
  • 应用实例
    从命令行输入一个数 n,统计从 1+…+ n 的值是多少?
    在这里插入图片描述
    注意:while后要有空格

猜你喜欢

转载自blog.csdn.net/qq_40121502/article/details/86476990