在子 shell 中生成的新值的分配在没有尾随注释的情况下也可以工作:
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
Why?
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)