欢迎,来自IP地址为:44.200.122.214 的朋友
本教程将以系列方式,详细讲解如何使用 Bash shell 脚本。
教程面向对 Linux 命令行终端具有一点了解的用户,不需要对命令完全精通,具备基本知识有助于理解教程的内容。
对于普通 Linux 桌面用户来说,本教程将帮助大家理解实际遇到的应用软件使用的大部分 shell 脚本;同样的,大家也可以使用脚本自动完成通用、重复性的工作。
学习好本教程,您将可以独自编写简单而实用的 bash 脚本。
PS:本教程使用的是 bash shell 脚本语言。虽然其他 shell 支持大部分的语法,但在某些地方也会有些许不同。Bash 是使用最为广泛的通用 shell,所以学习 shell 脚本一般会采用 bash。
第一个 shell 脚本:Hello World
打开命令行终端,创建一个新的目录以保存全部脚本文件:
# mkdir bash_scripts
现在,切换至新创建的脚本目录:
# cd bash_scripts
使用如下命令创建一个新的脚本文件:
# touch hello_world.sh
编辑文件内容,可以采用多种方式,此处使用管道符(>)来将内容增加至脚本文件中:
# cat > hello_world.sh
执行完此命令后,就可以在屏幕输入内容”echo Hello World”,输入完成后按 Ctrl+C 或 Ctrl+D 键完成输入,输入的内容会自动保存至 hello_world.sh。这里建议内容输入完成后,按回车键另起一行,再按 Ctrl+C 结束输入。查看 hello_world.sh 文件内容,则只有输入的一行内容。
现在就是见证奇迹的时刻了,我们已经创建完成了一个 shell 脚本,是时候执行它了。使用如下命令执行脚本:
# bash hello_world.sh
echo 命令会将提供给它的内容显示出来,最终的执行结果是将”Hello World”显示在屏幕上。
现在可以庆祝一下了,我们已经成功执行了自己的第一个 shell 脚本。
执行脚本的另一种方法
通常情况下,我们会使用如下方式执行 shell 脚本:
# ./hello_world.sh
马上执行脚本,会报错提示脚本文件没有可执行权限,给脚本添加可执行权限,使用如下命令:
# chmod u+x hello_world.sh
再次使用”./”方式执行脚本,就不会报权限错误了,执行如果可以正常显示。
这里展示了两种执行 shell 脚本的方法,之后会更多的聚焦在 bash 上。
将 shell 脚本转换为 bash 脚本
是不是感觉有点晕?事实上,Linux 系统通常有多种 shell:Bash、ksh、csh、zsh以及更多。这些 shell中,最常用也是最多 Linux 发行版默认选用的是 bash。
shell 可以理解为一个解释器,它接收并执行 Linux 命令。不同的 shell 或多或少会有些不同。依据 bash 语法编码的脚本可能在 ksh 环境下不能正确执行。
这就是需要告诉操作系统使用何种 shell 来解释脚本的原因了。
对于”bash hello_world.sh”的情形,我们明确使用 bash 解释器。
但是对于”./hello_world.sh”的情形,操作系统并不知道使用哪种 shell 来执行这个脚本,转而使用系统默认的 shell 来执行它。幸运的是系统默认 shell 也是 bash,执行结果正常。但是如果系统默认的 shell 是其它 shell,那么脚本执行时会出现各种意想不到的问题。
为了避免出现类似问题,我们需要明确告知操作系统使用哪个 shell 来执行脚本。
怎么做呢?使用 shebang (#!)符。通常来说,”#”用于脚本中的注释内容,然而如果”#!”出现在脚本的首行,它便具有了特殊用途,用以告知操作系统脚本使用何种 shell。”#!”之后的内容便是脚本使用的 shell。
现在,把”hello_world.sh”修改为如下内容:
#!/bin/bash hello_world.sh
现在,我们的脚本就可以在非默认 bash 环境下正确的执行了。
一下节,我们将讲解 bash 的变量使用。>>Bash 基础(二):Bash 脚本变量使用<<