当前位置: 首页 > article >正文

LinuX---Shell---流程控制

if判断

1)基本语法

(1)单分支
if [ 条件判断式 ];then
程序
fi

或者

if [ 条件判断式 ]
then
程序
fi
(2)多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意事项:

① [ 条件判断式 ],中括号和条件判断式之间必须有空格

② if后要有空格

2)案例实操

输入一个年龄数字,如果小于18,则输出“未成年”,如果小于60,则输出“成年人”,否则输出“老年人”,如果没有指定年龄,提示“请携带年龄”。

feng@ubuntu:~$ vim if.sh

写入以下内容

#!/bin/bash
if [ $# -eq 0 ]
then
echo '请携带年龄'
elif [ $1 -lt 18 ]
then
echo '未成年人'
elif [ $1 -lt 60 ]
then
echo '成年人'
else
echo '老年人'
fi

保存退出。

feng@ubuntu:~$ chmod 777 if.sh
feng@ubuntu:~$ ./if.sh 12
未成年人
feng@ubuntu:~$ ./if.sh 34
成年人
feng@ubuntu:~$ ./if.sh 66
老年人
feng@ubuntu:~$ ./if.sh
请携带年龄

case语句

1)基本语法

case $变量名 in 
"值1")
    如果变量的值等于值1,则执行程序1 
;; 
值2) 
    如果变量的值等于值2,则执行程序2 
;; 
    …省略其他分支… 
*) 
    如果变量的值都不是以上的值,则执行此程序 
;; 
esac

注意事项:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相当于C中的break。

(3)最后的“*)”表示默认模式,相当于C中的default。

2)案例实操

输入一个字符串,如果是start,则输出starting..,如果是stop,则输出stopping..,如果是其它,输出 please input (start|stop)。

feng@ubuntu:~$ vim case.sh

脚本中写入以下内容。

#!/bin/bash 

case $1 in 
"start")
        echo "starting"
;;
"stop")
        echo "stopping"
;;
*)
        echo "please input (start|stop)"
;;
esac

保存退出。

feng@ubuntu:~$ chmod 777 case.sh
feng@ubuntu:~$ ./case.sh start
starting
feng@ubuntu:~$ ./case.sh stopping
stopping
feng@ubuntu:~$ ./case.sh x
please input (start|stop)

for循环 (sh不支持,bash支持)

1)基本语法1

for ((初始值;循环控制条件;变量变化)) 
do 
    程序 
done

2)案例实操

从1加到100

feng@ubuntu:~$ vim for1.sh

脚本中写入以下内容。

#!/bin/bash

sum=0
for((i=1;i<=100;i++))
do
        sum=$[$sum+$i]
done
echo $sum

保存退出。

feng@ubuntu:~$ chmod 777 for1.sh
feng@ubuntu:~$ ./for1.sh
5050

3)基本语法2

for 变量 in 值1 值2 值3… 
do 
    程序 
done

4)案例实操

feng@ubuntu:~$ vim for2.sh

写入以下内容。

#!/bin/bash

for i in a b c
do
      echo "let's call $i"
done

保存退出。

feng@ubuntu:~$ chmod 777 for2.sh 
feng@ubuntu:~$ ./for2.sh
let's call a
let's call b
let's call c
(1)比较$*和$@区别

$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

feng@ubuntu:~$ vim for3.sh

写入以下内容。

#!/bin/bash 
echo '=============$*============='
for i in "$*" 
#$*中的所有参数看成是一个整体,所以这个for循环只会循环一次 
do
        echo "let's call $i"
done
echo '=============$@============='
for j in "$@" 
#$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次 
do
        echo "let's call $i"
done

保存退出。

feng@ubuntu:~$ chmod 777 for3.sh
feng@ubuntu:~$ ./for4.sh cls mly wls
=====$*=========
let's call a b c
=====$@=========
let's call a
let's call b
let's call c

while循环

1)基本语法

while [ 条件判断式 ] 
do 
    程序
done

2)案例实操

从1加到100。

feng@ubuntu:~$ vim while.sh

写入以下内容。

#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
        sum=$[$sum+$i]
        i=$[$i+1]
done

echo $sum

保存退出。

feng@ubuntu:~$ chmod 777 while.sh 
feng@ubuntu:~$ ./while.sh 
5050


http://www.kler.cn/a/585873.html

相关文章:

  • VSTO(C#)Excel开发8:打包发布安装卸载
  • 开源后台管理系统推荐
  • oracle中OS BLOCK的含义
  • naive ui 控制 n-input 只可以输入26个英文字母+数字
  • 方差缩减梯度算法
  • 【嵌入式】嵌入式系统中的 SemVer 版本控制方案
  • 网络安全信息收集[web子目录]:dirsearch子目录爆破全攻略以及爆破字典结合
  • Flutter三棵树是什么,为什么这么设计
  • SpringBoot解决跨域
  • 鸿蒙app 开发 高效的 存储 数据 推荐使用 @tencent/mmkv(V2.1.0):
  • 计算矩阵边缘元素之和(信息学奥赛一本通-1121)
  • 基于Android的记事本APP设计与实现:从需求分析到功能实现(超级简单记事本,附源码+文档报告)
  • 在IDEA中连接达梦数据库:详细配置指南
  • 【论文阅读方法】沐神课程:如何读论文
  • 工程化与框架系列(33)--前端安全实践指南
  • 前端存储-indexdb封装:dexie.js的使用
  • Nodejs+MySQL数据库管理
  • 手势调控屏幕亮度:Python + OpenCV + Mediapipe 打造智能交互体验
  • 3ds Max 导入到 After Effects 还原摄像机要注意事项--deepseek
  • 掌握市场先机:9款销售渠道管理工具深度测评