Bash脚本代码说明

时间:2017-05-02 19:47:53

标签: bash shell cygwin

我正在研究fast.ai课程(深入学习编码员)。他们的一个用于在AWS中设置实例的bash脚本具有我无法理解的这一行代码(尽管知道它的用途):

enter image description here

我很确定,这会在同一目录中调用另一个bash脚本。但是我想了解/澄清六件事:

  1. Q1

    为什么会有。在$(dirname“$ 0”)之前

  2. Q2

    “$ 0”和$ 0有什么区别,你是否强制将第一种情况下的输出转换为字符串?

  3. Q3

    我通过将它回显到我的命令行来检查dirname“$ 0”的作用。看起来它给出了shell的名称?所以在我的情况下(使用Cygwin并执行:echo "$0"),它会在控制台上打印“-bash”。

  4. Q4

    dirname做什么?

  5. Q5

    $(dirname“$ 0”)的值是多少?

  6. Q6

    变量:$ region,$ ami和$ instanceType是否会转移到setup_instance.sh,为什么?

1 个答案:

答案 0 :(得分:4)

  1. .source命令的原始名称。它在当前进程中执行shell脚本。

  2. 引用变量会将其扩展为单个单词,并防止对结果进行通配符扩展。大多数情况下,当你使用变量时,你应该引用变量,除非你特别需要单词拆分和通配。

  3. 在shell脚本中,$0包含脚本的路径名。在交互式shell中,它包含shell的路径名。

  4. 它输出路径名的目录部分。 dirname foo/bar/baz打印foo/bar

  5. 将答案结合到#3和#4 - 这是脚本路径名的目录部分。因此,这会在与此脚本相同的目录中查找setup_instance.sh脚本。

  6. 是的,他们会,因为.在分配了这些命令的同一个shell进程中执行setup_instance.sh中的命令。