シェルスクリプト コード解析

シェルスクリプトの汚いコード、バグになりかねないソースを解析

noexec オプション

#!/usr/bin/env bash

set -o noexec

実際に実行はしない
構文チェックや DryRun といった振る舞い

構文エラー時は

11: 構文エラー: 予期しないファイル終了 (EOF) です

のようなエラー表示

shellcheck

Install

ubuntu

sudo apt-get install shellcheck

Mac

brew install shellcheck

Exec shellcheck

source sc.sh

#!/usr/bin/env bash

set -o noexec

if [[ $1 == test ]]; then
 param='test'
else
 param='not test'
fi

echo "$param"
shellcheck sc.sh

エラーなし

source sc.sh (echo ” を外す)

#!/usr/bin/env bash

set -o noexec

if [[ $1 == test ]]; then
 param='test'
else
 param='not test'
fi

echo $param
shellcheck sc.sh

In sc.sh line 11:
echo $param
     ^----^ SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean: 
echo "$param"

For more information:
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...

エラーを指摘される。エラーの詳細はリンク先で確認

Intellij IDEA ではエディタ上で表示してくれる。

IntellijIdea shellscript analysis


おっさんWEBエンジニア奮闘記©2007 WEBDIMENSION