添加内联注释后,Bash命令停止工作

问题描述

在子外壳中生成的新值的分配确实可以工作,而无需结尾注释:

newname=$(echo "$newname" | sed 's@TD.'"$oldnewTD"'@TD.r'"$ftd1"'@')

但是,如果添加了结尾注释,则变量newname保持不变:

newname=$(echo "$newname" | sed 's@TD.'"$oldnewTD"'@TD.r'"$ftd1"'@')# let us not change NonEqRead to NonEq

为什么?

Bash版本5.0.3

解决方法

原来,散列之前的空间bash中非常重要-很少提及,因为由于可读性受损,它似乎太明显了。但是,当您使用语法突出显示时,很容易忽略该空白而不会注意到它(当然,依赖于编辑器的问题;例如vim会受到影响)。我花了很多时间试图找出错误所在。

newname=$(echo "$newname" | sed 's@TD.'"$oldnewTD"'@TD.r'"$ftd1"'@') # let us not change NonEqRead to NonEq

没有空格,整行会自动失败(即,没有任何错误消息)。据我了解,bash试图将哈希解释为子Shell或赋值运算符的某种修饰符。无论如何,这似乎与如何逐字读取bash脚本有关。

请参阅相关案例的说明:https://stackoverflow.com/a/60238806/2010413

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...