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

1. 条件测试

  • 和 \] 是一个用于执行条件测试的命令。它们必须用空格分隔开,并且在 \[ 后面和 \] 前面必须有空格。

2. 条件句

ifelseifelse.sh 文件中,

bash 复制代码
#!/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文件中,

bash 复制代码
#!/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 循环

bash 复制代码
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中,

bash 复制代码
#!/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 文件中,

bash 复制代码
#!/bin/bash

showname(){
        echo hello $1
}
showname Herbert

8. 函数和条件句

functionposargu.sh 文件中,

bash 复制代码
#!/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。
相关推荐
冲上云霄的Jayden15 小时前
bash执行脚本 CondaError: Run ‘conda init‘ before ‘conda activate‘
linux·ubuntu·conda·bash·init·activate
清羽_ls1 天前
bash 基础编程的核心语法
开发语言·bash
To_再飞行4 天前
Linux Bash(一)
linux·运维·服务器·bash
我狸才不是赔钱货4 天前
揭开命令行的面纱:终端、CLI、Shell的终极辨析
vscode·ssh·bash
hour_go7 天前
Linux Shell 实验一:数据采集与脚本调试错误总结
linux·笔记·bash·shell·实验报告·错误排查
本贾尼8 天前
Linux系统下的终端,会话,shell,bash,进程组这几个概念的关系。
linux·服务器·网络·ubuntu·bash
骁的小小站9 天前
Learn C the Hardway学习笔记和拓展知识(一)
c语言·开发语言·c++·经验分享·笔记·学习·bash
vortex511 天前
Shell脚本技巧:去除文件中字符串两端空白
linux·bash·shell·sed·awk
小何好运暴富开心幸福15 天前
C++之日期类的实现
开发语言·c++·git·bash
Maple_land16 天前
Linux进程第五讲:PPID与bash的关联、fork系统调用的原理与实践操作(上)
linux·运维·服务器·centos·bash