shell脚本流程控制语句

news/2024/7/15 22:53:31 标签: linux, 运维

if else语句

需求 

提示"请输入你的考试成绩:" 接收用户输入一个成绩, 之后使用if else条件句判断
要求1: 小于 60 输出"不及格"
要求2: 大于等于70 并且 小于80 输出"中等"
要求3: 大于等于80 并且 小于90 输出"良好"
要求4: 大于等于90 并且 小于等于100 输出"优秀"
要求5: 以上不符合输出"成绩不合法"

代码

#!/bin/bash
read -p "请输入你的考试成绩:" score
if (( $score < 60 )); then
    echo "不及格"
elif (( $score >= 60 && $score < 70 )); then
    echo "及格"
elif (( $score >= 70 && $score < 80 )); then
    echo "中等"
elif (( $score >= 80 && $score < 90 )); then
    echo "良好"
elif (( $score >= 90 && $score <= 100 )); then
    echo "优秀"
else
    echo "成绩不合法"
fi

if语句退出状态码

Linux任何命令的的执行都会有一个退出状态,大多数命令状态0代表成功, 非0代表失败

$? 查看退出状态码

需求

提示输入"请输入文件全名: "和"请输入数据:" 并接收文件名与数据

使用逻辑运算符判断满足2 条件 : 文件需要具有可写权限 和 输入的数据长度不为0

满足以上2个条件 将用户输入的 数据 写入到指定的文件中去

代码

#!/bin/bash
read -p "请输入文件全名: " filename
read -p "请输入数据:" data
if [ -w $filename -a -n $data ]
then
        echo $data
        echo $data > $filename
        echo "成功"
else
        echo "失败"
fi

test命令

对整数比较测试

test 整数1 -options 整数2

options:-eq想等  -ne不等  -gt大于  -ge大于等于  -lt小于  -le小于等于 

对字符串比较测试

test 变量1 -options 变量2

options:\>  \<  !=  =  ==

对文件测试

test -options 文件路劲字符串

options:-w可写  -r可读  -e存在  -x执行  -s存在且至少有一个字符  -d目录?

case语句        多选择语句

case、in 和 esac 都是 Shell 关键字, esac就是case的反写在这里代表结束case

匹配模式: 可以是一个数字、一个字符串,甚至是一个简单正则表达式。

格式说明
*表示任意字符串。
[abc]表示 a、b、c 三个字符中的任意一个。[15ZH] 表示 1、5、Z、H 四个字符中的任意一个。
[m-n]表示从 m 到 n 的任意一个字符。[0-9] 表示任意一个数字,[0-9a-zA-Z] 表示字母或数字。
|表示多重选择,类似逻辑运算中的或运算。 abc | xyz 表示匹配字符串 "abc" 或者 "xyz"。

需求 实现输入0-7数字返回相应周几

代码

#!/bin/bash
read -p "请输入一个数字:" num
case $num in
1)
        echo "周一"
        ;;
2)
        echo "周二"
        ;;
3)
        echo "周三"
        ;;
4)
        echo "周四"
        ;;
5)
        echo "周五"
        ;;
6)
        echo "周六"
        ;;
7|0)
        echo "周日"
        ;;
*)
        echo "无效"
        ;;
esac
 

while语句

语法        

while 条件
do
    命令1
    命令2
    ...
    continue; # 结束当前这一次循环, 进入下一次循环
    break; # 结束当前循环
done

until语句

循环结构语句,与while循环相反,条件为false会一直循环

until 条件

do

        命令

done

for循环

语法1

for var in item1 item2 ... itemN
do
    命令1
    命令2
    ...
done

语法2  start end 整数

for var in {start..end}
do
    命令
done

语法3

for((i=start;i<=end;i++))
do
    命令
done

select语句

语法    常配合case in 使用

select var in menu1 menu2 ...
do
    命令
done

#!/bin/bash
echo "你的爱好是什么?"
select hobby in "编程" "游戏" "篮球" "游泳"
do
    echo $hobby
    break
done
echo "你的爱好是:${hobby}"

#!/bin/bash
echo "你的爱好是什么"
select hobby in "编程" "游戏" "篮球" "游泳"
do
    case $hobby in
        "编程")
            echo "编程,多敲代码"
            break
            ;;
        "游戏")
            echo "少玩游戏"
            break
            ;;
        "篮球"|"游泳")
            echo "运动有利健康"
            break
            ;;
        *)
            echo "输入错误,请重新输入"
    esac
done


http://www.niftyadmin.cn/n/289455.html

相关文章

在Ubuntu中安装和使用Windows字体

现代人对于电脑的依赖已经越来越高&#xff0c;不仅仅是工作、学习&#xff0c;更是娱乐、生活中必不可少的一部分。而对于一些设计师、程序员、游戏爱好者等专业人士来说&#xff0c;拥有一台高效、美观的电脑更是必不可少的。在这篇文章中&#xff0c;我们将向大家介绍如何在…

反调试与反反调试

参考文本 (190条消息) C 反反调试&#xff08;NtQueryInformationProcess&#xff09;_(-: LYSM :-)的博客-CSDN博客 Windows 平台反调试相关的技术方法总结—part 2 - 先知社区 C/C MinHook 库的使用技巧 - lyshark - 博客园 (cnblogs.com) (177条消息) C 反反调试&#x…

机器学习 day11(决策边界,损失函数)

逻辑回归模型的预测过程 通常来说&#xff0c;我们先选择一个阈值0.5&#xff0c;当f(x) > 0.5时&#xff0c;则预测y为1&#xff0c;当f(x)&#xff1c;0.5时&#xff0c;则预测y为0。由此我们可以得出&#xff0c;当阈值取0.5时&#xff0c;g(z)取0.5&#xff0c;z取0。…

多线程 双重检查锁详解

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

linux 系统下gcc

linux c gcc gcc编译可以执行4步骤&#xff1a;预处理、编译、汇编、链接 预处理 gcc -E hello.c----->hello.i 展开宏、头文件&#xff0c;替换条件编译&#xff0c;删除注释、空行、空白 编译 gcc -S hello.i------>hello.s 检查语法规范 汇编 gcc -c hello.…

linux安装mysql

1. 卸载系统自带的mariadb 我这里使用的是Centos7, 所以系统会自带Mariadb&#xff0c;需要先卸载掉 查询已安装的 Mariadb 安装包 rpm -qa | grep mariadb 将所有的都卸载 rpm -e --nodeps xxx 2. 下载mysql安装包 (MySQL :: MySQL Downloads) 3.查看自己linux系统配置 …

Cartographer源码阅读---点云数据的预处理

上一节我们已经看到了, 传感器数据是通过CollatedTrajectoryBuilder类的HandleCollatedSensorData函数 传递给 GlobalTrajectoryBuilder类的相应函数. 从GlobalTrajectoryBuilder开始, 传感器数据才真正进入到Cartographer的前后端. Cartographer最重要的数据类型就是点云, 所以…

Jenkins安装及配置

前置条件 1. 已安装java1.8版本 java -version java version "1.8.0_361" Java(TM) SE Runtime Environment (build 1.8.0_361-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode) [rootlocalhost ~]# echo $JAVA_HOME /usr/java/jdk1.8.0_36…