Skip to content

Bash脚本编写

Bash 脚本

什么是 Bash 脚本

Bash 脚本是用 Bash Shell 编写的脚本程序。Bash(Bourne Again Shell)是一个 Unix shell 和命令语言,广泛用于 Linux 和 macOS 系统。Bash 脚本可以帮助我们自动化重复性任务、执行系统管理任务以及编写复杂的应用程序逻辑。 img.png

为什么使用 Bash 脚本

  • 自动化任务:通过编写脚本,可以自动化处理大量的系统管理和配置任务,减少手动操作。
  • 提高工作效率:脚本可以快速执行多条命令,减少手动输入,提高工作效率。
  • 跨平台兼容性:Bash 是大多数 Unix 系统(包括 Linux 和 macOS)的默认 Shell,编写的脚本可以在这些系统上无缝运行。
  • 强大的功能:Bash 提供了丰富的编程结构(如条件判断、循环、函数等)和内置命令,能够处理复杂的任务。

Bash 脚本创建

1. 创建脚本文件

使用 touch 命令创建一个新的脚本文件,Bash 脚本文件使用扩展名.sh

toush bash_script.sh

2. 编辑脚本文件

使用 vimvi 编辑器打开脚本文件进行脚本编写,也可使用其它的文本编辑器,例如 nanogedit

vim bash_script.sh

3. 写入代码

使用编辑器打开文件后,按 i 键进行编辑。

#!/bin/bash
echo "Hello World"
  • #!/bin/bash:这一行被称为“shebang”,告诉系统使用 /bin/bash 解释器来执行这个脚本。
  • echo "Hello World":这一行代码使用 echo 命令在终端输出 “Hello World”。

4. 保存并退出编辑器

vim 中,按 Esc 键进入命令模式,输入 :wq 并按 Enter 保存并退出。(注意使用英文)。

Bash 脚本执行

在编写好脚本后,需要赋予脚本执行权限,并运行脚本。

1. 赋予脚本执行权限后再运行脚本

使用 chmod 命令给脚本文件添加执行权限

chmod +x bash_script.sh
  • chmod:改变文件权限的命令。
  • +x:表示添加执行权限。
  • bash_script.sh:文件名。

2. 执行脚本

./bash_script.sh

输出结果:

Hello World
  • ./:表示当前目录。
  • bash_script.sh:文件名。

可以直接使用 bash 文件名 运行脚本。

bash ./bash_script.sh

Bash 脚本注释

注释对于任何编程语言都是不可忽视的重要组成部分,编写者通过注释来为其他人提供解释或提示,能有效提高代码的可读性。Bash 同其他编程语言一样提供了两种类型注释的支持。

单行注释

单行注释:使用 # 开头。

# 这是一个单行注释
echo "Hello World"  # 这也是一个单行注释

结果:

Hello World

多行注释

多行注释:多行注释可以使用 <<BLOCKBLOCK: '' 包含注释内容

<<BLOCK
这是一个多行注释。
它可以包含多行内容。
BLOCK

: '
这是另一个多行注释。
它也可以包含多行内容。
'

read 命令

read 命令用于从终端或文件中读取输入。

read <variable_name>

常用参数:

  • -p:选项在同一行上输入。read -p "Enter your name: " user_name
  • -s:静默输入。read -s -p "Enter your password: " password
  • -a:对数据进行多个输入。read -a array

算术运算

在 Bash 中运行 11 种算术运行符。用例执行基本的数学计算。

加法

加法运算用于将两个数相加,使用 + 号表示

示例:

result=$((7+2))
echo "7 + 2 = $result"

结果:

7 + 2 = 9

减法

减法运算用于将一个数从另一个数中减去,使用 - 号表示。

示例:

result=$((7-2))
echo "7 - 2 = $result"

结果:

7 - 2 = 5

乘法

乘法运算用于将两个数相乘。

示例:

result=$((7 * 2))
echo "7 * 2 = $result"

结果:

7 * 2 = 14

除法

除法运算用于将一个数除以另一个数,使用 / 表示。

示例:

result=$((18 / 2))
echo "18 / 2 = $result"

结果:

18 / 2 = 9

求幂

求幂运算用于计算一个数的幂,使用 ** 表示。

示例:

result=$((10 ** 2))
echo "10^2 = $result"

结果:

10^2 = 100

模运算用于计算两个数相除的余数,使用 % 表示。

示例

result=$((11 % 3))
echo "11 % 3 = $result"

结果:

11 % 3 = 2

常量递增变量

将变量的值增加一个常量,并将结果存储回该变量,使用 += 表示。

示例:

x=7
let "x += 7"
echo "x += 7 -> $x"

输出:

x += 7 -> 14

常量递减变量

将变量的值减少一个常量,并将结果存储回该变量,使用 -= 表示。

示例:

x=7
let "x -= 2"
echo "x -= 2 -> $x"

输出:

x -= 2 -> 5

变量乘以常量

将变量的值乘以一个常量,并将结果存储回该变量,使用 *= 表示。

示例:

x=7
let "x *= 2"
echo "x *= 2 -> $x"

输出:

x *= 2 -> 14

变量除以常量

将变量的值除以一个常量,并将结果存储回该变量,使用 /= 表示。

示例:

x=18
let "x /= 2"
echo "x /= 2 -> $x"

输出:

x /= 2 -> 9

变量除以常量的余数

将变量的值除以一个常量并取余数,并将结果存储回该变量,使用 %= 表示。

示例:

x=11
let "x %= 3"
echo "x %= 3 -> $x"

输出:

x %= 3 -> 2

关系运算符

关系运算符用于比较两个数值或字符串,在脚本中用于条件判断。下面我们逐一介绍每种运算符,并提供详细的示例代码。

赋值

将一个变量的值赋给另一个变量,使用 = 表示。

示例:

a=5
b=$a
echo "b = $b"

输出:

b = 5

等于

检查两个数值或字符串是否相等,使用==表示。

示例:

a=5
b=5
if [ $a == $b ]; then
  echo "$a 等于 $b"
else
  echo "$a 不等于 $b"
fi

输出:

5 等于 5

不相等

检查两个数值或字符串是否不相等,使用 != 表示。

示例:

a=5
b=6
if [ $a != $b ]; then
  echo "$a 不等于 $b"
else
  echo "$a 等于 $b"
fi

输出:

5 不等于 6

检查两个数字是否相等

比较两个数字是否相等,使用 -eq 表示。

示例:

if [ 1 -eq 1 ]; then
  echo "1 等于 1"
else
  echo "1 不等于 1"
fi

输出:

1 等于 1

检查两个数字是否不相等

比较两个数字是否不相等,使用 -ne 表示。

示例:

if [ 1 -ne 2 ]; then
  echo "1 不等于 2"
else
  echo "1 等于 2"
fi

输出:

1 不等于 2

检查左边数是否大于右边数

比较左边的数字是否大于右边的数字,使用 -gt 表示。

示例:

if [ 2 -gt 1 ]; then
  echo "2 大于 1"
else
  echo "2 不大于 1"
fi

输出:

2 大于 1

检查左边数是否小于右边数

比较左边的数字是否小于右边的数字,使用 -lt 表示。

示例:

if [ 1 -lt 2 ]; then
  echo "1 小于 2"
else
  echo "1 不小于 2"
fi

输出:

1 小于 2

检查左边数是否大于等于右边数

比较左边的数字是否大于或等于右边的数字,使用 -ge 表示。

示例:

if [ 2 -ge 1 ]; then
  echo "2 大于或等于 1"
else
  echo "2 小于 1"
fi

输出:

2 大于或等于 1

检查左边数是否小于等于右边数

比较左边的数字是否小于或等于右边的数字,使用 -le 表示。

示例:

if [ 1 -le 2 ]; then
  echo "1 小于或等于 2"
else
  echo "1 大于 2"
fi

输出:

1 小于或等于 2

总结

  • 什么是 Bash 脚本
  • 为什么使用 Bash 脚本
  • Bash 脚本创建
  • Bash 脚本执行
  • Bash 脚本注释
  • read 命令
  • 算术运算
  • 关系运算符