📜  显示 echo “$SHELL” 和 echo '$SHELL' 之间区别的 Shell 脚本

📅  最后修改于: 2021-09-15 01:46:39             🧑  作者: Mango

在文件的帮助下执行 shell 命令时,这称为 shell 脚本。在本文中,我们将了解 shell 命令是如何工作的?如何更有效地使用命令?并了解shell上命令的解释逻辑。 Bash 或 Bourne Again Shell 是使用最广泛的 shell,它预装在大多数 Linux 发行版中。

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

单引号解释:

单引号不会将变量、反斜杠等任何内容解释为其他形式。例如:

# h = 5
# echo '$h'

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

在这里,我们初始化了一个变量名“h”和 5,然后我们使用 echo 命令使用单引号中的 $ 符号打印值。现在让我们在一个名为 SHELL 的预定义变量上试试这个,这个预定义变量存储了 shell 的路径。

# echo '$SHELL'

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

即使变量 SHELL 包含 shell 的路径,它也没有在输出中打印路径,因为我们使用了单引号 ‘ ‘。

外壳脚本:

我们可以使用文件做同样的事情,使其可执行并运行它会产生类似的输出。

我们将使用:

  • nano:它是 Linux 发行版的命令行文本编辑器。
  • cat: cat 命令将用于查看文件的内容。
  • chmod:此命令将用于授予可执行权限。

在 nano 编辑器中打开一个文件,命名为 program.sh。 “.sh”扩展名用于 shell 脚本文件。

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

将内容写入文件:

h = 5
echo '$h'

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

按 ctrl + o 保存并按 ctrl + x 退出,现在授予 program.sh 文件执行权限:

# chmod 777 program.sh

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

运行文件:

# ./program.sh

双引号解释:

双引号将解释带有变量、反斜杠等的命令。双引号在处理各种变量和用户输入时非常有用。让我们举同样的例子:

# h = 5
# echo "$h"

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

是的,这次 h 的实际值被打印为“”,解释语句中出现的特殊情况。同样,现在只需使用 SHELL 等预定义变量检查它。

# echo "$SHELL"

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

外壳脚本:

现在让我们使用 shell 脚本文件来尝试整个过程。

使用 nano 编辑器打开一个名为 newProgram.sh 的文件:

# nano newProgram.sh

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

写出下面给出的内容:

h = 5
echo "$h"

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

授予权限使其可执行:

# chmod +x newProgram.sh

运行文件以查看输出:

# ./newProgram.sh

解释 echo “$SHELL” 和 echo “$SHELL” 区别的 Shell 脚本

下表是了解单引号和双引号行为的表格。首先,我们初始化一些变量。

# name = (hemant)
# number = 40
Input Output Interpretation
echo “$name hemant Variable get interpreted
echo ‘$name $name Literal meaning get printed
echo “$number 40 interpreted
echo ‘$number $number No interpretation of variable
echo ‘“$number “$number” ” ” is treated literally inside ‘ ‘
echohello\t$name hello\themant Interpreted but by default escape sequence in off
echo -ehello\t$name hello    hemant Worked with -e option
\’ \’ \’ is interpreted inside ” “ but has no significance for