我开始学习 Bash 脚本,我正在使用Bash 脚本教程
那里说
在 Bash 解释(或运行)我们脚本的每一行之前,它首先检查是否存在任何变量名。对于它识别的每个变量,它用它的值替换变量名。然后它运行该行代码并在下一行再次开始该过程。
那么 Bash 是否首先运行整个脚本来查找变量?我不确定这是否是作者试图说的,但如果是的话,我想这是不正确的?
当我执行:
#!/bin/bash
echo "hello $USERR"
USERR=John
我得到hello
了结果。
如果我运行:
#!/bin/bash
USERR=John
echo "hello $USERR"
然后我得到hello John
结果。
没有。正如您自己在示例中发现的那样,Bash 脚本是从上到下执行的。
一个好的做法是在脚本顶部定义您需要的所有变量。
这是一种非常草率的说法,即 shell 扫描每个命令以查找扩展,例如变量(但也包括命令替换等)
该文本可以解释为暗示 shell 读取整个脚本并在执行前在每一行上查找变量。事实并非如此。它按命令处理脚本命令,而不是逐行处理。一个命令可以跨越多行。直到 shell 解释器在执行脚本时才处理命令。
在执行每个命令之前,
bash
shell 会对每个命令执行以下操作: