Bash脚本学习 - 条件句、数组、for循环,函数

2023-09-17 15:55:06

1. 条件测试

在这里插入图片描述

  • [ 和 ] 是一个用于执行条件测试的命令。它们必须用空格分隔开,并且在 [ 后面和 ] 前面必须有空格。
  • -eq 是一个比较运算符,表示等于(equal)。它用于比较两个值是否相等。

2. 条件句

在 ifelseifelse.sh 文件中,

#!/bin/bash

if [ ${1,,} = herbert ]; then
        echo "Oh, you're the boss here. Welcome!"
elif [ ${1,,} = help ]; then
        echo "Just enter your username, duh!"
else
        echo "I don't know who you are. But you're not the boss of me!"
fi

在这里插入图片描述

3. Case statement

在 admin.sh文件中,

#!/bin/bash

case ${1,,} in
        herbert | administrator)
                echo "Hello, you're the boss here!"
                ;;
        help)
                echo "Just enter your username!"
                ;;
        *)
                echo "Hello there. You're not the boss of me. Enter a valid username!"
esac

在这里插入图片描述

4. 数组

在这里插入图片描述

  • 这个例子展示了如何创建一个数组。
  • 如何打印数组的第一个元素。
  • 如何打印整个数组。
  • 如何打印数组某个位置的元素。

5. for 循环

for item in ${MY_FIRST_LIST[@]}; do echo -n $item | wc -c; done

输出为:
3
3
5
4
4

  • for item in ${MY_FIRST_LIST[@]}; do:这是一个for循环的开始,它将遍历名为MY_FIRST_LIST的数组中的所有元素。$item表示当前遍历到的数组元素。

  • echo -n $item:这部分命令用于打印(显示)当前数组元素的值,但-n选项表示不要在末尾添加换行符。这意味着它会把元素值输出在同一行。

  • |:这是管道符号,它将前一个命令的输出传递给后一个命令作为输入。

  • wc -c:这部分命令使用wc命令来统计字符数(字节数)。-c选项告诉wc只统计字符数,而不是单词数或行数。

  • “;”:这是命令分隔符,它用于将多个命令放在同一行。

  • done:这是for循环的结束标记,表示循环体的结束。

6. 函数

写一个显示计算机的运行时间和启动时间的脚本。

在firstfunction.sh中,

#!/bin/bash

showuptime(){
        local up=$(uptime -p | cut -c4-)
        local since=$(uptime -s)
        cat << EOF
-----
This machine has been up for ${up}
It has been running since ${since}
-----
EOF
}
showuptime

输出为:
在这里插入图片描述

  • uptime -p命令用于获取计算机的运行时间,然后使用cut -c4-命令将字符串的前三个字符(通常是"up ")去掉,以得到纯粹的运行时间。
  • uptime -s命令用于获取计算机的启动时间。
  • cat << EOF:这是一个Here Document结构,它用于创建一个包含多行文本的块。这里的EOF表示文本块的结束标记。
  • showuptime:这一行表示调用定义的showuptime函数。

7. 函数和位置自变量

在 functionposargu.sh 文件中,

#!/bin/bash

showname(){
        echo hello $1
}
showname Herbert

在这里插入图片描述

8. 函数和条件句

在 functionposargu.sh 文件中,

#!/bin/bash

showname(){
        echo hello $1
        if [ ${1,,} = herbert ]; then
                return 0
        else
                return 1
        fi
}
showname $1
if [ $? = 1 ]; then
        echo "Someone unknown called the function!"
fi
  • 条件句中,如果输入和位置变量为 herbert ,返回0;否则,返回1。
    在这里插入图片描述
更多推荐

hive电子商务消费行为分析

hive电子商务消费行为分析1.掌握Zeppelin的使用2.了解数据结构3.数据清洗4.基于Hive的数据分析1.物料准备(1)Customer表customer_detailsdetailscustomer_idInt,1-500first_namestringlast_namestringemailstring,

爬虫 — 多线程

目录一、多任务概念二、实现多任务方式1、多进程(Multiprocessing)2、多线程(Multithreading)3、协程(Coroutine)三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate()五、继承Thread类创建线程六、线程间的通信

pytorch学习3(pytorch手写数字识别练习)

网络模型设置三层网络,一般最后一层激活函数不选择relu任务步骤手写数字识别任务共有四个步骤:1、数据加载--LoadData2、构建网络--BuildModel3、训练--Train4、测试--Test实战1、导入各种需要的包importtorchfromtorchimportnnfromtorch.nnimport

程序员必掌握的算法系列之动态规划算法

一:引言动态规划是一种重要的算法思想,其在程序员的日常工作中经常被使用到。它可以解决许多实际问题,如最短路径、最大子序列和等等。掌握动态规划算法不仅能提高程序员的编程能力,还可以优化算法的时间复杂度和空间复杂度。因此,作为程序员,必须深入学习和应用动态规划算法。二:动态规划算法介绍动态规划是一种将复杂问题分解成简单子问

【C++】C++ 语言对 C 语言的加强 ③ ( 类型检查增强 - 所有函数和变量必须有类型 | 新增 bool 类型 - bool 类型简介 )

文章目录一、类型检查增强-所有函数和变量必须有类型1、C语言函数类型-函数参数与返回值类型可以不确定2、C++语言函数类型-函数参数与返回值类型必须写明二、新增bool类型-bool类型简介一、类型检查增强-所有函数和变量必须有类型1、C语言函数类型-函数参数与返回值类型可以不确定在C语言中,函数的返回值类型在定义时可

使用GPT训练中秋古诗写作讲解

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。🎉欢迎👍点赞✍评论⭐收藏文章目录🚀一、背景🚀二、功能实现🔎2.1准备数据集🔎2.2安装环境和库🔎2.

typescript typeof操作符

tstypeof操作符简介在TypeScript中,typeof是一个操作符,用于获取一个值的类型。它可以与任何值一起使用,并返回一个描述该值类型的字符串。typeof操作符在TypeScript中的用法与JavaScript中的用法非常相似。如下,众所周知,在js中提供了typeof操作符用来在js中获取数据的类型t

多线程模式下的单例创建

Java单例DouleCheck方式/***doublecheck*如果没有synchronized和二次checkNull在单线程中没有任何问题。*synchronized保证只能有一个线程进入方法体中,其他的线程会进入等待队列。*[_instance=newJavaTest()]流程为:new写入缓存->更新到主存

Python进阶学习分享之循环设计

range()在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标。之前我们已经使用过range()来控制for循环。现在,我们继续开发range的功能,以实现下标对循环的控制:S='abcdefghijk'foriinrange(0,len(S),2):printS[i]在该

黑盒测试的优缺点(文档+视频讲解)

黑盒测试是一种软件测试方法,它基于对软件系统整体的分析和测试。相比白盒测试,黑盒测试更注重测试的结果和表现,而不是关注代码内部的实现和问题。在本文中,我们将探讨黑盒测试的优点和缺点。同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取软

HarmonyOS应用开发Web组件基本属性应用和事件

一、Web组件概述Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载、页面交互、页面调试等能力。页面加载:Web组件提供基础的前端页面加载的能力,包括加载网络页面、本地页面、Html格式文本数据。页面交互:Web组件提供丰富的页面交互的方式,包括:设置前端页面深色模式,新窗口中加载页面,位置权限管理,C

热文推荐