引用shell脚本中的未引用变量

时间:2016-04-25 14:42:58

标签: bash shell sh busybox

我们开始使用shellcheck检查我们的脚本是否存在错误/警告

现在常见的警告我们在所有脚本中看到的是未引用的变量  是否有任何脚本来纠正这些简单的警告/错误? 我有以下命令用于将$VAR更改为${VAR}

sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):${\1}:g' <scriptname>

我修改如下,
sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):"${\1}":g' <scriptname>

当变量没有引用时,

上面的命令工作正常,但是当它们被引用时,例如"$VAR"它更改为""${VAR}""

是否继续使用sed或更好的写脚本来执行此操作的任何建议?

任何特别的建议?

1 个答案:

答案 0 :(得分:2)

仔细编辑 当你写echo "This is example ${var} in the middle of the line"时,你不想在${var}附近加上引号 您应该将所有变量(PATH,PWD和其他系统变量除外)放在小写中。 您可能希望在.vimrc中添加一些映射,这些映射将使用F5的F4(类似. ! ~/bin/make_my_var)执行您的sed第一或第二个命令行,从而使编辑更容易。在make_my_var中,当它们不是异常列表之一时,您可以添加用于小写变量的逻辑。 和(编辑): 您可能需要更多标准,可能使用styleguide