脚本结构

我们在学习每一种编程语言时,都会先学习写一个hello world的demo程序,下面我们将从这个小demo程序来窥探一下我们shell脚本的程序结构

#!/bin/bash

# 注释信息

echo_str="hello world"

test(){
        echo $echo_str
}

test echo_str

首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件demo.sh,文件扩展名sh代表shell,表明该文件是一个shell脚本文件,并不影响脚本的执行,然后将上述代码片段写入文件中,保存退出

然后使用bash -n demo.sh命令可以检测刚才脚本文件的语法是否错误,如果没有回显结果就代表脚本文件没有语法错误

关于上述脚本文件中的代码语法,这里我们简单说明下,详细说明介绍将在下述文档中一一展开

  • 脚本都以#!/bin/bash开头,#称为sharp!在unix行话里称为bang,合起来简称就是常见的shabang#!/bin/bash 指定了shell脚本解释器bash的路径,即使用bash程序作为该脚本文件的解释器,当然也可以使用其它的解释器/bin/sh等,根据具体环境进行相应选择
  • echo_str是字符串变量,通过$进行引用变量的值,
  • test是自定义函数名,通过函数名 传入参数格式进行函数的调用
  • echo是shell命令,相对于c中的printf
  • #字符用来注释shell脚本的

最后可以使用下列两种方式执行上述脚本

  • 将脚本作为bash解释器的参数执行:此时首行的#!/bin/bashshabang可以不用写

    • bash demo.sh:直接将脚本文件作为bash命令的参数
    • bash -x demo.sh:使用-x参数可以查看脚本的详细执行过程
  • 将脚本作为独立的可执行文件执行:此时首行的#!/bin/bashshabang必须写,用来指定shell解释器路径;同时脚本必须可执行权限

    • chmod +x demo.sh:给脚本添加执行权限
    • ./demo.sh:执行脚本文件,在这里需要使用./demo.sh表明当前目录下脚本,因为PATH环境变量中没有当前目录,写成demo.sh系统会去/sbin、/sbin等目录下查找该脚本,无法找到该脚本文件执行,造成报错