如何分配零长度、非空字符串

如何分配零长度、非空字符串

基于,在我读过的许多其他内容中,我的理解是,这a=''使得a长度为零和零。但是,那么如何创建一个零长度、非空字符串呢?或者说,根本就没有这样的事情吗?在某种程度上,这是依赖于 shell 的,我正在 bash 中工作。

答案1

“空字符串”方法“零长度(空)字符串”。参见例如“空字符串”的 POSIX 定义。这意味着不存在非空零长度字符串。

然而,有诸如此类的事情未设置多变的。

var=''
unset uvar

现在,运行上述代码之间var和运行后之间存在差异。uvar例如,${var-hello}将扩展为空字符串since varis set,而${uvar-hello}将扩展为hellosince uvaris unset。同样,${var+hello}将扩展为hellosincevar已设置,并将${uvar+hello}扩展为空字符串sinceuvar is unset”(请参阅标准参数扩展

在 中bash,您还可以使用-vtest 来测试变量是否已设置:

if [ -v variable ]; then
    echo variable is set
fi

同样,“设置但为空”的变量与“未设置”的变量不同。字符串(变量的内容)不能为空,同时也不能具有非零长度。

在其他语言中,字符数组可能包含 nul 字节 ( \0),这意味着您可能有一个以 nul 字节开始的数组,然后包含一些文本(以另一个 nul 字节终止)。当这被解释为细绳,该字符串的长度为零,但数组的内容不会为空。

大多数 shell(除了zsh)不允许变量中出现 nul 字节。

相关内容