【发布时间】:2019-12-13 22:04:34
【问题描述】:
如果我在赋值后添加 colon (:) 内置 shell 命令,变量将被分配给空字符串 ("")。为什么它会这样?我预计它不会有任何效果。
set -vx
MyVar1='my var 1' : colon comment here # *** !!! This gets assigned to empty string!!!
MyVar2='my var 2' # hash comment here; this is fine
echo "MyVar1 = [$MyVar1]" # EXPECTED: 'my var 1'; ACTUAL: '' (empty string). Why?
echo "MyVar2 = [$MyVar2]" # As expected.
:(冒号)
:[参数]
除了扩展参数和执行重定向之外什么都不做。返回状态为零。
https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html
【问题讨论】:
-
它实际上不是空的,它没有设置(尝试
[[ -v $MyVar1 ]] || echo 'not set'作为测试)。
标签: bash shell sh variable-assignment built-in