shellcheck 规范

ShellCheck规范

ShellCheck是一个静态分析工具,显示有关bash / sh shell脚本中的错误代码的警告和建议。

安装

官方网站 github

SC1010

'done' 的前面必须有分号或者换行
错误代码:

for f in *; do echo "$f" done

正确代码:

for f in *; do echo "$f"; done

SC1014

使用 'if cmd; then ..' 结构来检查返回值, 或者 'if [[ $(cmd) == .. ]]' 结构来检查输出.
错误代码:

if [ grep -q pattern file ]
then
  echo "Found a match"
fi

正确代码:

if grep -q pattern file
then
  echo "Found a match"
fi

SC1017

所有文件的换行符格式必须为 LF
错误代码:

$ cat -v myscript
#!/bin/sh^M
echo "Hello World"^M

正确代码:

$ cat -v myscript
#!/bin/sh
echo "Hello World"

SC1020

在单行中 "]" 前必须加上一个空格
错误代码:

if [ "$STUFF" = ""]; then

正确代码:

if [ "$STUFF" = "" ]; then

SC1029

在 " [[..]] " 结构中 不能转移 “(" 或者 " ) "
错误代码:

[[ -e ~/.bashrc -a \( -x /bin/dash -o -x /bin/ash \) ]]

正确代码:

[[ -e ~/.bashrc -a ( -x /bin/dash -o -x /bin/ash ) ]]

SC1035

控制结构的必须要有一个空格符 错误代码:

if ![-z foo ]; then true; fi # if command `[-z' w/ args `foo', `]' fails..

正确代码:

if ! [ -z foo ]; then true; fi # if command `[' w/ args `-z', `foo', `]' fails..

SC1054

结构 '{' 后必须要有一个空格符 错误代码:

foo() {echo "hello world;}

正确代码:

foo() { echo "hello world;}

SC1065

不要去定义参数,使用默认参数 例如 $1,$2.. 错误代码:

foo(input) {
  echo "$input"
}
foo("hello world");

正确代码:

foo() {
  echo "$1"
}
foo "hello world"

SC1068

不要在 = 的前后输入空格 错误代码:

foo = 42

正确代码:

foo=42

SC1075

使用 'elif' 代替 'else if' 结构 错误代码:

if [ "$#" -eq 0 ]
then
  echo "Usage: ..."
else if [ "$#" -lt 2 ]
then
  echo "Missing operand"
fi

正确代码:

if [ "$#" -eq 0 ]
then
  echo "Usage: ..."
elif [ "$#" -lt 2 ]
then
  echo "Missing operand"
fi

SC1086

在循环的迭代名字中不要使用 $ 符号
错误代码:

for $var in *
do
  echo "$var"
done

正确代码:

for var in *
do
  echo "$var"
done

SC1095

在函数名和主体之间需要一个空格或换行。
错误代码:

function foo{
  echo "hello world"
}

正确代码:

function foo {
  echo "hello world"
}

SC1099

在"#"符号前需要一个空格。
错误代码:

while sleep 1
do# show time
  date
done

正确代码:

while sleep 1
do # show time
  date
done

SC2016

在表达式里面需要使用双引号。
错误代码:

name=World
echo 'Hello $name'

正确代码:

name=World
echo "Hello $name"

转载于:https://my.oschina.net/2688/blog/736548

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值