有了这个神器,再也不怕shell写得不对了

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

写过shell脚本的人都知道,即便出现一些简单的语法错误,运行的时候也可能没有办法发现。有些看似运行正确的脚本,实际上可能在某些分支,某些场景下仍然出现错误,而有的写法可能运行正常,但是却不符合POSIX标准,不具备可移植性。

诚然,shell脚本是解释运行,没有办法向C/C++那样严格检查,但是我们仍然可以借助一些工具帮助我们提前发现一些错误。

shellcheck

shellcheck就是这样的一个工具。它可以在多种场景下使用,包括在线,命令行检查,编辑器配置,下面逐一介绍。

在线使用

顾名思义,它提供了一个在线的检查地址,https://www.shellcheck.net/,进入网址即可使用。
例如,你输入你的脚本内容:

#!/bin/sh
for n in {1..$RANDOM}
do
  str=""
  if (( n % 3 == 0 ))
  then
    str="fizz"
  fi
  if [ $[n%5] == 0 ]
  then
    str="$strbuzz"
  fi
  if [[ ! $str ]]
  then
    str="$n"
  fi
  echo "$str"
done

shell
它会给出错误提示或者建议:

Line 2:
for n in {1..$RANDOM}
         ^-- SC2039: In POSIX sh, brace expansion is undefined.
             ^-- SC2039: In POSIX sh, RANDOM is undefined.

Line 5:
  if (( n % 3 == 0 ))
     ^-- SC2039: In POSIX sh, standalone ((..)) is undefined.

Line 9:
  if [ $[n%5] == 0 ]
       ^-- SC2039: In POSIX sh, $[..] in place of $((..)) is undefined.
       ^-- SC2007: Use $((..)) instead of deprecated $[..]
              ^-- SC2039: In POSIX sh, == in place of = is undefi
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值