用正确的引用自动重写bash脚本的工具?

用户名

我正在考虑使一个大型代码库shellcheck的所有bash脚本符合要求,但是这项任务很繁琐,因为历史上有太多的开发人员忽略了所有shell脚本中的第一个规则:始终使用引号

如果有一个至少可以解决该报价问题的工具,将会很有帮助。然后,我将可以手动修复其余部分。我的正则表达式没有删减它,因为只有字符串中没有的变量必须被引用。

输入样例:

echo "Removing $a ${b} $(c $(c)) `d $d` ${10} $@ now"
rm -rf $a ${b} $(c $(c)) `d $d` ${10} $@

样本输出:

echo "Removing $a $b $(c "$(c)") `d "$d"` ${10} $@ now"
rm -rf "$a" "$b" "$(c "$(c)")" "$(d "$d")" "${10}" "$@"

它不必修复以上所有问题,甚至不必完美无瑕(尽管那确实很不错),但是它必须经常正确而不是有用。


这是我朴素的正则表达式,并没有减少它:

s:([^"])\$\{([_A-Za-z0-9]+)\}([^"]|$):\1"\$\2"\3:g

它将$ {identifier}转换为“ $ identifier”,除非在引号前或后立即加引号,但无法检测到我们是否在字符串中更深。

用户名

WPomier击败了我,但我也做了我自己的(因为我想这样做):https :
//github.com/anordal/shellharden

在您为其提供--transform选项之前,它充当语法突出显示器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章