《掌握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 脚本理解的加深,用户将能够编写出更为高效、可维护的脚本,进一步提升自动化水平,适应快速变化的技术环境。

相关推荐
云飞云共享云桌面2 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq2 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮3 小时前
Linux 使用中的问题
linux·运维
dsywws4 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零5 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
李启柱5 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
小林熬夜学编程6 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬7 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077007 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp7 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu