Hello World

互动壳牌

Bash shell 通常以交互方式使用 它允许你输入和编辑命令,然后在按下 Return 键时执行它们。许多基于 Unix 和类 Unix 操作系统使用 Bash 作为其默认 shell(特别是 Linux 和 macOS)。终端在启动时自动进入交互式 Bash shell 进程。

输入以下内容输出 Hello World

echo "Hello World"
#> Hello World  # Output Example

笔记

  • 你只需在终端中键入 shell 的名称即可更改 shell。例如:shbash

  • echo 是一个 Bash 内置命令,它将接收的参数写入标准输出。默认情况下,它会在输出中附加换行符。

非交互式外壳

Bash shell 也可以从脚本非交互式运行,使 shell 不需要人工交互。交互行为和脚本行为应该是相同的 - 这是 Unix V7 Bourne shell 和传递 Bash 的重要设计考虑因素。因此,可以在命令行中执行的任何操作都可以放在脚本文件中以供重用。

请按照以下步骤创建 Hello World 脚本:

  1. 创建一个名为 hello-world.sh 的新文件

    touch hello-world.sh
    
  2. 通过运行 chmod +x hello-world.sh 使脚本可执行

  3. 添加此代码:

    #!/bin/bash
    echo "Hello World"
    

    第 1 行:脚本的第一行必须以字符序列 #! 开头,称为 shebang 1 。shebang 指示操作系统运行/bin/bash,即 Bash shell,将脚本的路径作为参数传递给它。

    例如/bin/bash hello-world.sh

    第 2 行 :使用 echo 命令将 Hello World 写入标准输出。

  4. 使用以下方法之一从命令行执行 hello-world.sh 脚本:

    • ./hello-world.sh - 最常用,推荐
    • /bin/bash hello-world.sh
    • bash hello-world.sh - 假设/bin 在你的 $PATH
    • sh hello-world.sh

对于真正的生产用途,你会省略 .sh 扩展(这是误导,因为这是一个 Bash 脚本,而不是 sh 脚本)并且可能将文件移动到你的 PATH 目录中,这样无论你有什么当前工作目录,就像 catls 这样的系统命令。

常见错误包括:

  1. 忘记对文件应用执行权限,即 chmod +x hello-world.sh,导致 ./hello-world.sh: Permission denied 的输出。

  2. 在 Windows 上编辑脚本,这会产生 Bash 无法处理的错误行结束字符。

    一个常见的症状是: command not found,其中回车已将光标强制到行的开头,覆盖错误消息中冒号前的文本。

    可以使用 dos2unix 程序修复脚本。

    一个使用示例:dos2unix hello-world.sh

    dos2unix 内联编辑文件。

  3. 使用 sh ./hello-world.sh,没有意识到 bashsh 是具有不同特征的不同壳(尽管由于 Bash 向后兼容,相反的错误是无害的)。

    无论如何,仅仅依靠脚本的 shebang 线比在每个脚本的文件名之前明确地写 bashsh(或 pythonperlawkruby 或……)更为可取。

    为了使脚本更具可移植性而使用的常见 shebang 行是使用 #!/usr/bin/env bash 而不是硬编码 Bash 的路径。这样,/usr/bin/env 必须存在,但除此之外,bash 只需要在你的节目 44 上。在许多系统中,/bin/bash 不存在,你应该使用/usr/local/bin/bash 或其他一些绝对路径; 这种变化避免了弄清楚细节。

1 也称为 sha-bang,hashbang,pound-bang,hash-pling。