Shell 编程是指使用 Shell 语言编写脚本程序,以实现自动化任务。Shell 是一种命令语言,也是 Linux/Unix 系统上的一种程序设计语言。以下是一些基本的 Shell 编程概念和步骤:
Shell 种类
Bourne Shell (`/bin/sh` 或 `/bin/bash`)
Bourne Again Shell (`/bin/bash`)
C Shell (`/usr/bin/csh`)
K Shell (`/usr/bin/ksh`)
Shell for Root (`/sbin/sh`)
其他变种如 Z Shell (`/bin/zsh`) 和 Dash (`/bin/dash`) 等。
编写 Shell 脚本
文件扩展名:通常使用 `.sh` 作为脚本文件的后缀,但也可以使用其他后缀或无后缀。
Shebang:脚本文件的第一行通常指定解释器,例如 `!/bin/bash` 表示使用 Bash 解释器。
注释:使用 `` 开头的行是注释,不会被执行。
变量定义:变量名和等号之间不能有空格,例如 `name="John"`。
输入输出:
`echo` 用于输出文本。
`read` 用于读取用户输入。
常用命令
文件操作:
`touch filename`:创建文件。
`mkdir dirname`:创建目录。
`rm filename`:删除文件。
`rm -r dirname`:删除目录。
`cp source destination`:复制文件。
`mv source destination`:移动文件。
文本处理:
`cat`:显示文件内容。
`grep`:搜索文本。
`awk`:文本处理。
`sed`:流编辑器。
控制结构
条件判断:
`if [ condition ]; then`:如果条件成立,执行命令。
`elif [ condition ]; then`:如果上一个条件不成立,执行此条件分支的命令。
`else`:如果所有条件都不成立,执行此命令。
`fi`:结束条件判断。
函数
定义:使用 `function` 关键字定义函数,例如 `function helloFunc() { echo "Hello!" }`。
传参:在函数定义中可以使用 `$1`、`$2` 等表示参数,例如 `HelloFunc "Caigen"`。
脚本间调用
相互调用:一个脚本可以通过 `. another_script.sh` 的方式调用另一个脚本。
变量调用:在调用脚本时,可以通过 `source` 命令导入另一个脚本中的变量,例如 `source a.sh`。
输入输出重定向
输出重定向:
`>`:将命令输出重定向到一个文件,如果文件不存在则创建。
`>>`:将命令输出追加到一个文件的末尾。
示例脚本
```bash
!/bin/bash
这是一个注释
echo "Hello, World!"
read -p "Enter your name: " name
echo "Hello, $name"
```
运行脚本
1. 将上述代码保存为 `hello.sh`。
2. 通过终端进入脚本所在目录,并赋予执行权限:
```bash
chmod +x hello.sh
```
3. 执行脚本:
```bash
./hello.sh
```
通过以上步骤,你可以开始编写和运行自己的 Shell 脚本,实现各种自动化任务。