如何创建一个 Bash Shell 脚本

x33g5p2x  于2020-09-08 发布在 Shell  
字(1.0k)|赞(0)|评价(0)|浏览(1263)

创建一个 Bash 脚本需要使用文件编辑器,将命令集输入到文本文件中,如下:
命令:

vi bashTest.sh

bashTest.sh:

#!/bin/bash
 …

在脚本的第一行需要输入#!/bin/bash,作用是指定 Shell 脚本解释器,如果不显示的指定,也可以执行,但是 bash 提供的函数不能使用

另外的情况是,用户默认的 Shell 解释器是 bash,但是如果其他用户要执行此脚本,这个用户的默认的 Shell 解释器不是 bash,
脚本执行过程中可能会出现异常,所以,要求在脚本的第一行要显示的指定 Shell 脚本解释器。

在 Shell 脚本中,#号是用来注释信息的,解释器不会执行#号后面的命令,只把他当中一般的注释信息。
注释可以用来说明脚本的使用场景和脚本的使用说明,方便其他用户使用脚本。

创建一个简单的脚本。
命令:

 vi bash01.sh

例:bash01.sh:

  #!/bin/bash
  # 创建的第一个 bash 脚本
  # 此脚本的作用是在用户工作目录下创建一个目录,在目录中创建一个日志文件
  # 并且将当前的系统日期和时间输入到文件中
  
  # 切换到工作目录
  cd /home/hadoop01
  
  # 创建 logs 目录
  mkdir logs
  
  # 切换到 logs 目录
  cd logs
  
  # 创建一个空的日志文件
  touch syslog.log
  
  # 将当前系统日期时间添加到 syslog.log 日志文件中
  date > syslog.log

当第一次执行脚本时,系统会警告命令找不到,通常解决的办法有两种:
第一种方法是将脚本所在的目录添加到环境变量 PATH 中,这样系统在执行脚本时会到 PATH 所指定的目录下去找,找到后执行。
另一种方式是使用绝对路径或在脚本所在目录下使用./的方式执行脚本,如下:

  /home/hadoop01/bash02/bash01.sh
  
  cd /home/hadoop01/bash02
  ./bash01.sh

如果在环境变量 PATH 中指定路径或使用绝对路径执行脚本,系统还会发出警告,说用户没有执行的权限,这是因为创建脚本文件时默认情况下是没有执行权限的,如下:

      -rw-rw-r--. 1 yarn yarn 440 7 月 6 16:51 bash01.sh

这和系统默认设置有关,可以重新设置。

看到脚本文件的属主有读写权限而没有执行权限,所以要通过命令 chmod 为属主设置可执行权限。
命令:

 chmod u+x bash01.sh
 bash01.sh:
 -rwxrw-r--. 1 yarn yarn 440 7 月 6 16:52 bash01.sh

好了,现在就可以执行脚本了。

相关文章