Skip to content

HelloWorld

编写shell脚本

在我们学习编程语言时,每门语言最简单的程序就是输出“Hello World”,shell脚本编程也不例外。进入 Linux 终端,编写一个 Shell 脚本 hello.sh

shell
#!/bin/bash

echo 'hello world!'
  • #! 告诉系统这个脚本需要什么解释器来执行。
  • 文件扩展名 .sh 不是强制要求的。

运行shell脚本

运行shell脚本有两种方式,第一种方式命令如下

shell
sh shell脚本文件名

# 例如
sh hello.sh

第二种方式命令如下

shell
# 给脚本赋予可执行权限
chmod +x shell脚本文件名
# 执行shell脚本
./shell脚本文件名

# 例如
chmod +x hello.sh 
./hello.sh
  • 方法1 直接运行解释器,hello.sh 作为 Shell 解释器的参数。此时 Shell 脚本就不需要指定解释器信息,第一行可以去掉。
  • 方法2 hello.sh 作为可执行程序运行,Shell 脚本第一行一定要指定解释器。

运行结果

可以看到两种方式都可以正确运行我们编写的shell脚本。

注释

在Shell编程中,注释是用于解释代码、添加说明或暂时禁用某些代码行的文本。Shell脚本中的注释不会被执行,但它们对于提高代码的可读性和可维护性非常重要。

Shell脚本支持两种类型的注释:

  1. 单行注释: 单行注释以#字符开始,直到行尾。这意味着在该行中#之后的所有内容都被视为注释,并且不会被执行。

    sh
    # 这是一个单行注释
    echo "Hello, World!"  # 这也是注释,紧跟在命令后面
  2. 多行注释(或称为块注释): Shell脚本本身并不直接支持多行注释的语法。但是,有几种方法可以模拟多行注释的效果。

    • 使用:命令: 在Shell中,:是一个空操作(即什么也不做)的命令。因此,你可以将多行文本放在:命令和<<EOF(或任何其他分隔符)之间来实现多行注释的效果。但是,请注意,这种方法并不是真正的注释,因为它实际上会执行一个空操作命令。不过,由于它不产生任何输出或副作用,因此通常被用作多行注释的替代方法。

      sh
      : <<'EOF'
      这是一个多行注释
      它不会被执行
      EOF
      echo "这条命令会被执行"

      注意:上面的示例使用了Here Document(这里文档)的语法,但是这里并没有真正使用Here Document来读取输入,而是用它来界定一个不会被执行的代码块。<<'EOF'是Here Document的一种变体,它允许EOF字面量不出现在引用的字符串中,从而避免了转义字符的使用。

    • 使用if false语句: 另一种方法是使用if false语句块。在这个块中的所有内容都会被视为false条件的代码块,因此不会被执行。这种方法比使用:命令更明确地表达了“这是一个不会被执行的代码块”的意图。

      sh
      if false; then
      # 这是一个多行注释
      # 它不会被执行
      fi
      echo "这条命令会被执行"
    • 使用#字符重复: 对于较短的多行注释,你也可以简单地在每行的开头添加#字符。虽然这种方法不如上面的方法优雅,但它对于简短的注释来说是有效的。

      sh
      # 这是一个多行注释的第一行
      # 这是第二行
      # 这是第三行
      echo "这条命令会被执行"

在编写Shell脚本时,应该根据注释的长度和需要来选择最适合的方法。对于简短的注释,使用单行注释就足够了;对于较长的注释或需要暂时禁用大段代码的情况,可以考虑使用上面提到的多行注释的替代方法。