Skip to content

Shell 脚本

Shell 脚本主要用于编写自动化以及批量处理的命令

解释器

不同主机上可能有不同种类的 Shell 解释器

可通过环境变量$SHELL查看当前主机使用的解释器 ( 值是解释器的路径 )

bash
% echo $SHELL
bin/bash
zsh
$ echo $SHELL
bin/zsh
常见 Shell 解释器常见适用环境解释器位置配置文件
bash大部分 Linux 发行版、
Catalina 版之前的 macOS
/bin/bash~/.bashrc
zshCatalina 版之后的 macOS、
Kali Linux
/bin/zsh~/.zshrc
例子:分别在 macOS 本机环境以及一个 Alma Linux Docker 容器环境中查看 Shell 解释器
zsh
% echo $SHELL
/bin/zsh

% docker pull almalinux
% docker run --name study_bash -it almalinux
[root@b77049294c4f /]# echo $SHELL
/bin/bash
[root@b77049294c4f /]# exit

脚本执行

Shell 脚本可以直接运行在主机的终端

bash
$ [命令]

Shell 脚本也可以写入一个文件,文件后缀名约定为.sh

bash
# 在终端通过 bash 命令直接执行脚本文件
$ bash [文件名].sh

# 在终端通过 sh 命令直接执行脚本文件
$ sh [文件名].sh
bash
# 1. 给文件添加权限
$ chmod [权限] [文件名].sh

# 2. 通过路径直接执行脚本文件
$ [文件名].sh
例子:通过 bash 创建并执行一个 Shell 脚本文件
bash
$ echo '
#!/bin/bash
echo "hello world"
' > xxxx.sh

$ bash ./xxxx.sh
hello world

$ sh 111.sh
hello world
bash
$ echo '
#!/bin/bash
echo "hello world"
' > xxxx.sh

$ ./xxxx.sh                             # 报错:没有执行权限
sh: ./xxxx.sh: Permission denied

$ chmod +x ./xxxx.sh
$ ./my_test.sh
hello world

书写规范

Shell 脚本文件的第一行需要指明使用的解释器的路径 ( 大部分 Linux 发行版都使用 Bash )

sh
#![当前脚本使用的解释器的路径]

# ...
# ...
例子:一个使用 Bash 解释器的打印hello world的脚本文件
sh
#!/bin/bash

message="hello world"
echo ${message}

最近更新: