2

在脚本中,我将变量传递给汇编程序 (NASM),我希望这些变量由汇编程序作为字符串处理。这意味着正在执行的程序应该在文字文本周围接收成对的引号。(为了确保作为文本处理,在某些情况下,我会在字符串周围放置嵌套引号,例如“'...'”,即在内容周围的单引号周围加上双引号。)当不传递文本时(空字符串),应该传递两个没有内容的引号。

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

${parameter:-word}

使用默认值。如果 parameter 未设置或为 null,则替换 word 的扩展。否则,参数的值被替换。

这是我使用使用默认值参数扩展的示例: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还是可以,甚至首选,没有?

4

0 回答 0