BASH 脚本:何时包含反斜杠符号

Jam*_*eat 4 bash symbols quoting backslash

我正在编写一个 BASH 脚本并且我正在使用bash命令。以下哪一项是正确的(或都不正确)?

bash $pbs_dir/${module_name}.${target_ID}.${instance_ID}.pbs
Run Code Online (Sandbox Code Playgroud)

或者

bash \$pbs_dir/\${module_name}.\${target_ID}.\${instance_ID}.pbs
Run Code Online (Sandbox Code Playgroud)

and*_*lrc 5

\$将扩展为 literal $,所以有很大的不同:

$ a="hello"
$ echo $a
hello
$ echo \$a
$a
Run Code Online (Sandbox Code Playgroud)

另请注意,您几乎总是希望双引号您的参数扩展以避免分路径名扩展

echo "$a"
Run Code Online (Sandbox Code Playgroud)

所以你正确地想要使用以下内容:

bash "$pbs_dir/${module_name}.${target_ID}.${instance_ID}.pbs"
Run Code Online (Sandbox Code Playgroud)