请解释这两行bash代码发生了什么

请解释这两行bash代码发生了什么,bash,Bash,我现在正试图学习bash,遇到了一个脚本,我不能100%确定我是否读对了 source_dir_123=${SOURCE_DIR:-/tmp} echo source_dir_123=$source_dir_123 这里发生了什么?我猜这是一种变量分配,但我觉得很奇怪。 这里发生什么类型的分配/操作?这些类型的作业有具体的名称吗? 对不起,我有一个新问题,但我不明白为什么你要用这些作业,而不是像这样更直截了当的东西 source_dir_12="/tmp" /tmp是source\u dir

我现在正试图学习bash,遇到了一个脚本,我不能100%确定我是否读对了

source_dir_123=${SOURCE_DIR:-/tmp}
echo source_dir_123=$source_dir_123
这里发生了什么?我猜这是一种变量分配,但我觉得很奇怪。 这里发生什么类型的分配/操作?这些类型的作业有具体的名称吗? 对不起,我有一个新问题,但我不明白为什么你要用这些作业,而不是像这样更直截了当的东西

source_dir_12="/tmp"

/tmp
source\u dir\u 123
的默认值。如果未设置
source\u dir
,则将结果显示到控制台

请参见以下示例:

>echo$SOURCE\u DIR
>source_dir_123=${source_dir:-/tmp}
>回波源目录123=$source目录123
source_dir_123=/tmp
#现在让我们设置SOURCE_DIR
>SOURCE_DIR=/test
>source_dir_123=${source_dir:-/tmp}
>回波源目录123=$source目录123
source_dir_123=/test

echo source\u dir\u 123=$source\u dir\u 123
只输出
source\u dir\u 123=
,然后输出该变量中存储的内容。如果它还没有值,那么
/tmp
将存储在那里,因此完整的输出将是
source\u dir\u 123=/tmp
。谢谢!Bash非常强大,但有时会有点混乱:)