Bash shell通常以交互方式使用:它允许您输入和编辑命令,然后在按下Return键时执行它们。许多基于Unix和类似Unix的操作系统都使用Bash作为默认外壳程序(特别是Linux和macOS)。终端在启动时自动进入交互式Bash Shell进程。
Hello World通过键入以下内容输出:
echo "Hello World" #> Hello World # Output Example
您可以通过在终端中键入外壳名称来更改外壳。例如: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/bashBash 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行比在每个脚本的文件名之前显式编写bashor sh(或pythonorperl或awkor rubyor or ...)更可取。
为了使您的脚本更具可移植性,常用的shebang行是使用#!/usr/bin/env bash而不是对通往Bash的路径进行硬编码。这样,/usr/bin/env就必须存在,但在那之后,bash只需要放在您的上即可PATH。在许多系统上,/bin/bash它不存在,您应该使用/usr/local/bin/bash或其他绝对路径。此更改避免了必须弄清楚细节的情况。
1 也称为“ sha-bang”,“ hashbang”,“ bang-bang”,“ hash-pling”。