Hello World
互动壳牌
Bash shell 通常以交互方式使用 : 它允许你输入和编辑命令,然后在按下 Return 键时执行它们。许多基于 Unix 和类 Unix 操作系统使用 Bash 作为其默认 shell(特别是 Linux 和 macOS)。终端在启动时自动进入交互式 Bash shell 进程。
输入以下内容输出 Hello World
:
echo "Hello World"
#> Hello World # Output Example
笔记
-
你只需在终端中键入 shell 的名称即可更改 shell。例如:
sh
,bash
等 -
echo
是一个 Bash 内置命令,它将接收的参数写入标准输出。默认情况下,它会在输出中附加换行符。
非交互式外壳
Bash shell 也可以从脚本非交互式运行,使 shell 不需要人工交互。交互行为和脚本行为应该是相同的 - 这是 Unix V7 Bourne shell 和传递 Bash 的重要设计考虑因素。因此,可以在命令行中执行的任何操作都可以放在脚本文件中以供重用。
请按照以下步骤创建 Hello World
脚本:
-
创建一个名为
hello-world.sh
的新文件touch hello-world.sh
-
通过运行
chmod
+x hello-world.sh
使脚本可执行 -
添加此代码:
#!/bin/bash echo "Hello World"
第 1 行:脚本的第一行必须以字符序列
#!
开头,称为 shebang 1 。shebang 指示操作系统运行/bin/bash
,即 Bash shell,将脚本的路径作为参数传递给它。例如
/bin/bash hello-world.sh
第 2 行 :使用
echo
命令将Hello World
写入标准输出。 -
使用以下方法之一从命令行执行
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
目录中,这样无论你有什么当前工作目录,就像 cat
或 ls
这样的系统命令。
常见错误包括:
-
忘记对文件应用执行权限,即
chmod +x hello-world.sh
,导致./hello-world.sh: Permission denied
的输出。 -
在 Windows 上编辑脚本,这会产生 Bash 无法处理的错误行结束字符。
一个常见的症状是
: command not found
,其中回车已将光标强制到行的开头,覆盖错误消息中冒号前的文本。可以使用
dos2unix
程序修复脚本。一个使用示例:
dos2unix hello-world.sh
dos2unix
内联编辑文件。 -
使用
sh ./hello-world.sh
,没有意识到bash
和sh
是具有不同特征的不同壳(尽管由于 Bash 向后兼容,相反的错误是无害的)。无论如何,仅仅依靠脚本的 shebang 线比在每个脚本的文件名之前明确地写
bash
或sh
(或python
或perl
或awk
或ruby
或……)更为可取。为了使脚本更具可移植性而使用的常见 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。