为什么有些命令可以在终端中执行,但不能在脚本中执行?

为什么有些命令可以在终端中执行,但不能在脚本中执行?

我正在编写一个基本脚本来练习使用数组。当我运行该脚本时,我收到错误,但当我在终端中运行相同的命令时,它会执行。

#!/bin/bash

declare -a StringArray

StringArray=("blue" "green")

for  val in ${StringArray[@]}; do
    echo $val
done

我已授予脚本可执行权限。我还遗漏了什么?

在此处输入图片描述

答案1

使用命令sh script.sh,您尝试使用 运行脚本shsh符号链接到dashdash是 Ubuntu 的标准命令解释器。它与 不同bash,本质上具有更少的功能,但速度非常快。Bash 更适合交互式使用,因此仍然是交互式提示的默认解释器。以下是有关这些命令解释器之间的区别

相反,使用以下命令运行脚本

bash script.sh

让它在适当的 shell 下执行。

如果您将脚本放在 PATH 中的目录中并使其可执行,则只需键入 即可在命令提示符下运行它script.sh。此时,shebang 行#!/bin/bash会告诉系统应使用什么。当以或bash运行脚本时,该 shebang 行只是一条注释,根本不会被解释。bash script.shsh script.sh

相关内容