首页 > 编程笔记 > Linux笔记 阅读:3

Linux shell脚本的编写和运行(附带实例)

在 Linux 中,将命令或条件判断、流程控制语句写入文件,通过运行文件的方式执行文件中的命令,其实就是在运行脚本。

接下来,让我们试着用命令来编辑一个简单的脚本吧。

编辑shell脚本

我们应该学习了 echo 命令的用法、如何调整格式、如何调整字体颜色,也学习了如何通过重定向的方式将 echo 输出的字符串写入指定的文件。

在编辑脚本时,echo 命令也是常见且常用的,使用 echo 命令可以输出提示、判断脚本执行情况或变量取值情况等。接下来我们将简单地使用 echo 命令完成第一个脚本,具体如下:
[root@localhost ~]# vim /root/echo.sh
#!/bin/bash
echo "Hello Rocky Linux"
关于文件中第一行写入的“#!/bin/bash”:
不过,我们也会发现,在写编辑 shell 脚本时,不加“#!/bin/bash”这句话,shell 脚本也可以正确执行。那是因为我们用户默认 shell 就是 /bin/bash,在没有声明 shell 类型时,会选择使用当前用户 shell 类型运行脚本。

如果把脚本放在默认环境而不是 Bash 的环境中运行,又或者编写脚本使用的不是纯 Bash 语言,而是嵌入了其他语言(如 expect 语言),那么脚本就不能正确执行了。因此,大家还是要记住我们的 shell 脚本都必须以“#!/bin/bash”开头。

在 shell 脚本中,除“#!/bin/bash”这行外,其他行只要以“#”开头就都是注释。建议大家在编写脚本时加入清晰而详尽的注释,用于对脚本中的语句进行解释和说明,这些都是在建立良好编程规范时应该注意的问题。

随后,来看脚本中的第二行。在第二行中写入了 echo 命令,输出“Hello Rocky Linux”,其实写在脚本中的 echo 命令的执行效果和在命令行中执行 echo 的效果并无较大差别。

现在我们只是以 echo 命令为例进行编写脚本。实际上,我们曾经学习过的命令都可以写入文件,以执行脚本的方式执行脚本中的命令,如 EOF、ls、grep 等命令都可以写到脚本中并以此方式运行。

运行shell脚本

前面我们编辑了第一个脚本,但是在 Linux 中运行脚本有多种可选方式,接下来逐一介绍。

1) 使用绝对路径或相对路径运行脚本

我们可以使用脚本的绝对路径或相对路径来运行脚本,使用这种方式的前提是脚本文件需要有可执行权限。在使用绝对路径或相对路径执行脚本时,脚本在子 shell 中执行,执行过程如下:
[root@localhost ~]# ls -l /root/echo.sh
-rw-r--r--. 1 root root 37 Nov 14 17:01 /root/echo.sh
[root@localhost ~]# /root/echo.sh
-bash: /root/echo.sh: Permission denied
#可以看到,在文件没有可执行权限时,脚本执行失败
我们给脚本文件加入可执行权限:
[root@localhost ~]# chmod +x /root/echo.sh
[root@localhost ~]# /root/echo.sh
Hello Rocky Linux
#执行成功,输出了echo后的字符串

2) 使用bash命令运行脚本

使用 bash 命令可以在脚本没有可执行权限的情况下运行脚本。使用 bash 命令执行脚本时,脚本在子 shell 中执行,执行效果如下:
[root@localhost ~]# ls -l /root/echo.sh
-rw-r--r--. 1 root root 37 Nov 14 17:01 /root/echo.sh
#先取消root/echo.sh文件的可执行权限
[root@localhost ~]# bash /root/echo.sh
Hello Rocky Linux
#使用bash命令还是能够正常执行脚本中的shell语句的

相关文章