bash:参数扩展,使用默认值:当扩展已经被引用时,是否应该用word引用?

时间:2019-07-06 19:44:27

标签: bash quoting parameter-expansion

在脚本中,我正在将变量传递给汇编器(NASM),我希望这些变量由汇编器作为字符串处理。这意味着正在执行的程序应在原义文本周围收到一对引号。 (为确保以文本形式处理,在某些情况下,我将嵌套引号放在字符串周围,例如“'...'”,即在内容周围将单引号引起来的双引号。)当不传递任何文本时(空字符串) ),则应传递两个引号之间没有内容的引号。

我正在使用参数扩展,特别是“使用默认值”类型,在bash手册页中对此进行了如下描述:

  

${parameter:-word}

     

使用默认值。如果参数未设置或为null,则展开-   用词的词代替。否则,参数的值   被替换。

这是我使用“使用默认值”参数扩展的示例:https://bitbucket.org/ecm/ldebug/commits/f9b7def927cab0568e30dd9480e9d9b31f46b99f#Lsource/mak.shT58 -D_REVISIONID_SYMSNIP="${build_revision_id_symsnip:-''}"

对此进行测试,看来word周围的双引号是允许的,但不是必需的。

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ foo=bar
$ baz=""
$ echo "${foo:-''}"
bar
$ echo "${foo:-"''"}"
bar
$ echo "${baz:-''}"
''
$ echo "${baz:-"''"}"
''
$ echo "${baz:-' '}"
' '
$ echo "${baz:-"' '"}"
' '
$ echo X"${baz:- }"Y
X Y
$ echo X"${baz:-" "}"Y
X Y
$ 

因此,我应该在word周围加上双引号吗?如果没有,是否可以使用,甚至可以使用呢?

0 个答案:

没有答案