ShellCheckを使ってシェルスクリプトのバグを簡単に見つける

簡単な説明:ShellCheckは、実行せずに、起こりうる構文と単純な論理エラーを警告する便利なユーティリティツールです。 Atomテキストエディタでも使用できます。

誰もが知っているように、端末はLinuxシステムの不可分の部分です。 そして、ターミナルで私たちがすることすべての背後には、シェルがあります。それは、オペレーティングシステムと相互作用するプログラムです。 ターミナルに入力したすべてのコマンドは最終的にシェルによって解釈され、それに応じて動作します。

プログラミング言語としてのシェル

しかし、シェルにはもっとあります。 UNIXシェルはコマンドインタプリタだけではなく、プログラミング言語としても機能します。 プログラミング言語としてのシェルは、変数、フロー制御構造、引用符、および関数を提供します。

シェルコマンドとコードを含むファイルはシェルスクリプトと呼ばれます。 そのため、シェルスクリプトを使用してシステムのさまざまな複雑なタスクと自動化を実現できます。

とにかく、私たちは人間なので、間違いを犯します。 つまり、シェルスクリプトを書くときには、構文上の誤り、タイプミス、悪いパターンなど、間違いを犯すことにもなります。ここでは、ShellCheckというツールについて知っておくと便利です。

シェルチェック

ShellCheckはあなたのシェルスクリプトのための静的解析ツールです。 これはオープンソースで、主にBashまたはshスクリプト用に開発されています。 今、あなたは不思議に思うかもしれません、一体何が静的分析であるか? 静的分析は、プログラムを実行/実行するのではなく、プログラムの(静的)コードを調べることによってプログラムをデバッグする方法です。

ShellCheckがどのような種類のことをチェックするのかを見てみましょう。

  • 引用:シェルには、変数と文字列を使用するための特定の方法があります。 間違って使用した場合は、ShellCheckから警告が出されます。
  • 条件:テスト文の使い方が間違っていないかチェックします。
  • よく使用されるコマンド: ShellCheckは、誤って使用されたシェルコマンドについて警告します。
  • よくある初心者の間違い:初心者のShellユーザーがShellとして行うさまざまな構文エラーは、他のプログラミング言語とは異なるさまざまな厳密な構文規則を使用しています。 たとえば、変数の宣言中に=記号の周囲にスペースを入れることはできません。 ほとんどの言語は気にしないでしょうが、ここでそれは重要です。
  • スタイル: ShellCheckはあなたのコードのスタイルを改善するための提案を提供します。
  • データと入力エラー:データと入力に関するさまざまな問題。
  • 堅牢性、移植性、その他 :ShellCheckはあなたのスクリプトを堅牢にするための提案をしたり、異なるシェル(bash、sh、ksh、dashなど)での移植性の問題やその他様々なことについて警告します。

ドキュメンテーションと様々な役に立つ情報のために、ShellCheck GitHubプロジェクトをチェックすることを忘れないでください:

GitHubのShellCheck

ShellCheckのインストール

オフラインで使用するために、あなたのシステムにShellCheckパッケージをインストールすることができます。 Ubuntuの場合は、端末で次のコマンドを入力します。

 sudo apt install shellcheck 

他のディストリビューションについては、GitHub ReadMe Installingセクションをチェックしてください。

Atomテキストエディタを使用している場合は、エディタウィンドウ内でShellCheckをオンザフライで使用することもできます。 ShellCheckに必要なatomパッケージをインストールするだけです。

 apm install linter linter-shellcheck 

ShellCheckは、Vim、Emacs、Sublimeなどの他のエディタもサポートしています。 完全なリストはGitHub ReadMeセクションにあります。

ShellCheckを使う

オンライン

あなたのシステムには何もインストールせずにShellCheckをオンラインで使用することができます(ただし、Webブラウザが必要になるでしょう)。

  • シェルスクリプトのコードをコピーしてください。
  • ShellCheckのWebサイトにアクセスしてください。
  • コードをエディタに貼り付けます。
  • ShellCheckの出力が表示されます。

これが例です:

ShellCheckオンラインを使用する

コマンドラインインターフェース

あなたのシステムにShellCheckのために必要なパッケージをインストールした後、あなたはどんなネット接続なしであなたのターミナルからそれを使うことができます。 次のコマンドを入力するだけです。

 shellcheck 

その部分をシェルスクリプトのファイル名に置き換えます。

ShellCheckコマンドラインインターフェイス

エディタ拡張

テキストエディタに必要な拡張機能をインストールすると、 shellcheckコマンドを手動で実行せずに、その場でShellCheckの出力を確認できます。 これがAtomエディタの外観です。

Linter-ShellCheck付きのアトム

長所短所

あなたが熟練したシェルプログラマーであろうと初心者であろうと、あなたはShellCheckを使うことによって得るべきすべてのものと失うものは何もありません。 あなたがシェルスクリプトを書いているときはいつでも、それをShellCheckでチェックしてください、あなたはエラーとバグを早くそして全体的にLinuxでもっと生産的になることができるでしょう。


あなたは以前にシェルスクリプトを書いてみたことがありますか? あなたはShellCheckを使いましたか? もしそうなら、あなたの経験はどうでしたか? 私たちと共有してください! :)

推奨されます

Linuxでパスワード保護されたZipファイルを作成する方法
2019
マイクロソフトオープンソースのPowerShell、Linuxにそれをもたらす!
2019
NSAはリバースエンジニアリングツールGhidraをオープンソース化しました
2019