加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

调试 – 有没有像针对bash with shellcheck的鱼一样?

发布时间:2020-12-16 01:19:41 所属栏目:安全 来源:网络整理
导读:对于sh / bash / zsh,有 https://github.com/koalaman/shellcheck但是它不会支持它的鱼 https://github.com/koalaman/shellcheck/issues/209 – 鱼有什么东西吗? 据我所知,没有(显然这是不可能证明的). 如果有人要创造这样的东西,就需要就“典型的初学者的
对于sh / bash / zsh,有 https://github.com/koalaman/shellcheck但是它不会支持它的鱼 https://github.com/koalaman/shellcheck/issues/209 – 鱼有什么东西吗?
据我所知,没有(显然这是不可能证明的).

如果有人要创造这样的东西,就需要就“典型的初学者的语法问题”和“导致shell表现奇怪和反直觉的语义问题”的共识达成共识.

鱼没有很多POSIX sh的疣(因为它是作为对它们的反应而写的). shellcheck README的一些例子:

echo $1                           # Unquoted variables

Fish的引用行为是完全不同的 – 特别是,变量没有单词分裂,所以不带引号的变量通常可以做你想要的.

v='--verbose="true"'; cmd $v      # Literal quotes in variables

这可能是一次(不成功的)企图击败分词,这是不必要的.

这个例子很好地说明了这个问题 – 有几十年的sh脚本.缺陷和不直观的行为是众所周知的.事实上众所周知,常见但不正确的变通方法也是众所周知的.这不是鱼的情况.

(显然,其他例子也适用于鱼类,特别是“经常误用的命令”部分.)

我认识新用户的鱼类中的一些东西经常会绊倒:

>未加引号的变量扩展为列表中每个元素的一个参数(因为每个变量都是一个).如果列表为空则包括零,这是测试的问题 – 例如test -n $var将返回0,因为fish的testin是与POSIX兼容的少数几个部分之一(因为POSIX要求测试,一个参数返回0).如果你总是需要一个参数,请双引号.> {}扩展为空,{x}扩展为“x”,这意味着查找-exec需要引用,一些git commit-ishes(HEAD @ {4})也是如此.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读