《掌握Shell脚本:从入门到精通的实用指南》

目录

引言

一、Shell变量------数组

二、表达式与运算符------表达式

(一)算术表达式

(二)逻辑表达式

(三)算术运算符

(四)整数关系运算符

(五)字符串检测运算符

(六)运算符

三、流程控制语句------多命令组合

1、基本if语句

[2、if...else 语句](#2、if...else 语句)

[3、if...elif...else 语句](#3、if...elif...else 语句)

[4、使用逻辑运算符 && 和 ||](#4、使用逻辑运算符 && 和 ||)

[5、使用 ! 进行非运算](#5、使用 ! 进行非运算)

[6、使用方括号 [[ ]]](#6、使用方括号 [[ ]])

7、if语句

8、case语句

9、循环语句

四、函数------定义与调用

1、返回值

2、参数

总结


引言

在现代操作系统中,Shell 脚本是一种强大的自动化工具,能够高效地处理系统管理和任务执行。通过使用数组、表达式、运算符和流程控制语句,用户可以编写出灵活而复杂的脚本,以满足各种需求。本文将介绍 Shell 中的数组用法、算术与逻辑运算、流程控制以及函数的定义与调用,帮助读者深入理解并掌握 Shell 脚本的基本构建块。

一、Shell变量------数组

  • bash支持一维数组(不支持多维数组)。
  • 在Shell中用括号来表示数组,数组元素用空格符号分开

数组名=(值1 ... 值n)

  • 可以单独定义数组的各个元素。
  • 可以不使用连续的下标,而且下标的范围没有限制。
  • 读取数组元素值的语法格式为:

${数组名[下标]}

  • 采用以下用法获取数组元素的个数:

${#数组名[@]}

  • 以下方法用于取得数组单个元素的长度:

${#数组名[n]}

①创建一个脚本文件

vim zh01.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

③启动zhh.sh 脚本文件

bash zh01.sh./zh01.sh 用./zh01.sh访问记得加执行的权限哦。chmod +x zh01.sh

二、表达式与运算符------表达式

(一)算术表达式

  • bash自身并不支持简单的数学运算,但可通过awk 和expr等命令来实现数学运算。
  • expr最为常用,使用它能够完成表达式的求值操作。
  • 更为简单的方式是使用$[]表达式进行数学计算
  • $(( )) 也是常用的方式

①创建一个脚本文件

vim zh02.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

result_expr=$(expr 5 + 3)

echo "使用 expr 计算 5 + 3 = $result_expr"

result_brackets=$[5+3]

echo "使用 \\[\] 计算 5 + 3 = result_brackets"

result_double=((5+3)) echo "使用 \\(( )) 计算 5 + 3 = $result_double"

③启动zh02.sh 脚本文件

bash zh02.sh

(二)逻辑表达式

  • 逻辑表达式主要用于条件判断,值为true(或0)表示结果为真;值为false(非零值)表示结果为假。
  • 通常使用test命令来判断表达式的真假。

①创建一个脚本文件

vim zh03.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

test 5 -gt 3 echo $? # 输出 0,表示为真

test 3 -gt 5

echo $? # 输出 1,表示为假

③启动zh03.sh 脚本文件

bash zh03.sh

  • Linux每个版本中都包含test命令,但该命令有一个更常用的别名,即左方括号"["。
  • 当使用左方括号而非test时,其后必须始终跟着一个空格、要评估的逻辑表达式、一个空格和右方括号,右方括号表示所需评估表达式的结束。逻辑表达式两边的空格是必需的。

①创建一个脚本文件

vim zh04.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

5 -gt 3

echo $? # 输出 0,表示为真

3 -gt 5

echo $? # 输出 1,表示为假

③启动zh04.sh 脚本文件

bash zh04.sh

(三)算术运算符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取余
  • =:赋值

①创建一个脚本文件

vim zh05.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

val1=10

val2=3

result_add=$((val1 + val2))

echo "加法:val1 + val2 = $result_add"

result_sub=$((val1 - val2))

echo "减法:val1 - val2 = $result_sub"

result_mul=$((val1 * val2))

echo "乘法:val1 \* val2 = $result_mul"

result_div=$((val1 / val2))

echo "除法:val1 / val2 = $result_div"

result_mod=$((val1 % val2))

echo "取余:val1 % val2 = $result_mod"

③启动zh05.sh 脚本文件

bash zh05.sh

(四)整数关系运算符

①创建一个脚本文件

vim zh06.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

a=5 b=3

if [ a -eq b ]; then

echo "a 等于 b"

else

echo "a 不等于 b"

fi

.............

..............

if [ a -ge b ]; then

echo "a 大于或等于 b"

else

echo "a 小于 b"

fi

if [ a -le b ]; then

echo "a 小于或等于 b"

else

echo "a 大于 b"

fi

③启动zh06.sh 脚本文件

bash zh06.sh

(五)字符串检测运算符

①创建一个脚本文件

vim zh07.sh

②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。

#!/bin/bash

a="hello"

b="world"

c=""

if [ "a" = "b" ]; then

echo "a 和 b 相等"

else

echo "a 和 b 不相等"

fi

if [ -n "$b" ]; then

echo "字符串 b 不为空"

else

echo "字符串 b 为空"

fi

③启动zh07.sh 脚本文件

bash zh07.sh

(六)运算符

文件测试运算符

布尔运算符

三、流程控制语句------多命令组合

1、基本if语句

if [ 条件 ]; then

条件为真时执行的命令

fi

2、if...else 语句

if [ 条件 ]; then

条件为真时执行的命令

else

条件为假时执行的命令

fi

3、if...elif...else 语句

if [ 条件 ]; then

条件为真时执行的命令

else

条件为假时执行的命令

fi

4、使用逻辑运算符 && 和 ||

if [ 条件 ]; then

条件为真时执行的命令

else

条件为假时执行的命令

fi

5、使用 ! 进行非运算

if [ ! 条件 ]; then

条件为假时执行的命令

fi

6、使用方括号 [[ ]]

if [[ 条件 ]]; then

条件为真时执行的命令

fi

7、if语句

if ... else 语句

if [ 条件表达式 ]

then

语句序列

fi

if ... else ... fi 语句

if [ 条件表达式 ]

then

语句序列1

else

语句序列2

fi
if ... elif ... fi 语句

if [ 条件表达式1 ]

then

语句序列1

elif [ 条件表达式 2 ]

then

语句序列2

elif [ 条件表达式3 ]

then

语句序列3

......

else

语句序列n

fi

8、case语句

case 值 in

模式1)

语句序列1

;;

模式1)

语句序列2

;;

......

模式n)

语句序列n ;;

*)

其他语句序列

esac

9、循环语句

四、函数------定义与调用

1、返回值

使用全局变量

先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数的返回值。

使用变量要注意不要修改父脚本里不期望被修改的内容。

在函数中使用标准输出

将一个Shell函数作为一个子程序调用(命令替换),将返回值写到子程序的标准输出。

在函数中使用return返回整数值

$?是一个特殊的内部变量,可用于获取上一个命令执行后的返回结果,可以直接通过函数return语句来接收返回值。

2、参数

在Shell中调用函数时可以向其传递参数。

与脚本一样,在函数体内部也是通过$n的形式来获取参数的值。

$1表示第一个参数。

$2表示第二个参数。

总结

通过对 Shell 变量、表达式与运算符、流程控制语句和函数的全面介绍,读者可以看到 Shell 脚本的强大功能与灵活性。无论是在日常的系统管理中,还是在复杂的任务调度中,掌握这些基本概念都将极大提高工作效率。随着对 Shell 脚本理解的加深,用户将能够编写出更为高效、可维护的脚本,进一步提升自动化水平,适应快速变化的技术环境。

相关推荐
xq5148631 小时前
Linux系统下安装mongodb
linux·mongodb
柒七爱吃麻辣烫1 小时前
在Linux中安装JDK并且搭建Java环境
java·linux·开发语言
孤寂大仙v2 小时前
【Linux笔记】——进程信号的产生
linux·服务器·笔记
深海蜗牛2 小时前
Jenkins linux安装
linux·jenkins
愚戏师3 小时前
Linux复习笔记(三) 网络服务配置(web)
linux·运维·笔记
JANYI20183 小时前
嵌入式MCU和Linux开发哪个好?
linux·单片机·嵌入式硬件
熊大如如3 小时前
Java NIO 文件处理接口
java·linux·nio
晚秋大魔王3 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
农民小飞侠3 小时前
ubuntu 24.04 error: cannot uninstall blinker 1.7.0, record file not found. hint
linux·运维·ubuntu
某不知名網友4 小时前
Linux 软硬连接详解
linux·运维·服务器