Shell 脚本
Shell 脚本主要用于编写自动化以及批量处理的命令
解释器
不同主机上可能有不同种类的 Shell 解释器
可通过环境变量$SHELL
查看当前主机使用的解释器 ( 值是解释器的路径 )
bash
% echo $SHELL
bin/bash
zsh
$ echo $SHELL
bin/zsh
常见 Shell 解释器 | 常见适用环境 | 解释器位置 | 配置文件 |
---|---|---|---|
bash | 大部分 Linux 发行版、 Catalina 版之前的 macOS | /bin/bash | ~/.bashrc |
zsh | Catalina 版之后的 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}