BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

ShellCheck –シェルスクリプトの警告と提案を表示するツール

ShellCheck は、bash/shシェルスクリプトの不正なコードに関する警告と提案を表示する静的分析ツールです。いくつかの方法で使用できます。https://www.shellcheck.net(常に最新のgitに同期されている)のオンラインエディター(Ace – JavaScriptで記述されたスタンドアロンコードエディター)にシェルスクリプトを貼り付けることにより、Webからコミットします。これは、ShellCheckをすぐにフィードバックするための最も簡単な方法です。

または、マシンにインストールしてターミナルから実行し、テキストエディタやビルドスイートまたはテストスイートと統合することもできます。

ShellCheckが主に行うことは3つあります。

  • シェルが不可解なエラーメッセージを表示する原因となる典型的な初心者の構文の問題を指摘し、説明します。
  • シェルが奇妙で直感に反する動作を引き起こす典型的な中間レベルのセマンティック問題を指摘し、説明します。
  • また、上級ユーザーが他の方法で作業しているスクリプトが将来の状況で失敗する原因となる可能性のある微妙な警告、コーナーケース、落とし穴についても指摘します。

この記事では、さまざまな方法でShellCheckをインストールして使用し、Linuxのシェルスクリプトのバグや不正なコードを見つける方法を紹介します。

LinuxでShellCheckをインストールして使用する方法

ShellCheck 図のように、パッケージマネージャーを使用してローカルに簡単にインストールできます。

Debian/Ubuntuについて

# apt-get install shellcheck

RHEL/CentOSの場合

# yum -y install epel-release
# yum install ShellCheck

Fedoraについて

# dnf install ShellCheck

ShellCheckをインストールしたら、前述のさまざまな方法でShellCheckを使用する方法を見てみましょう。

WebからのShellCheckの使用

https://www.shellcheck.netにアクセスし、提供されているAceエディターにスクリプトを貼り付けます。下のスクリーンショットに示すように、エディターの下部に出力が表示されます。

次の例では、テストシェルスクリプトは次の行で構成されています。

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;
ShellCheck –シェルスクリプトの警告と提案を表示するツール ShellCheck –シェルスクリプトの警告と提案を表示するツール

上のスクリーンショットから、最初の2つの変数 E_NOTROOT およびE_MINARGS 宣言されているが使用されていない場合、ShellCheckはこれらを「示唆的なエラー」として報告します:

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

次に、間違った名前(ステートメント echo $ E_NONROOT )は変数E_NOTROOTをエコーするために使用されました 、それがShellCheckがエラーを表示する理由です:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

繰り返しますが、echoコマンドを見ると、変数は二重引用符で囲まれていないため(グロブや単語の分割を防ぐのに役立ちます)、シェルチェックで警告が表示されます。

SC2086: Double quote to prevent globbing and word splitting.

ターミナルからのShellCheckの使用

コマンドラインからShellCheckを実行することもできます。上記と同じシェルスクリプトを次のように使用します。

$ shellcheck test.sh
ShellCheck –シェルスクリプトの警告と提案を表示するツール ShellCheck –シェルスクリプトの警告と提案を表示するツール

テキストエディタからのShellCheckの使用

ShellCheckも表示できます さまざまなエディターで直接提案や警告が表示されます。これはおそらくShellCheckを使用するより効率的な方法です。ファイルを保存すると、コードにエラーが表示されます。

Vim 、ALEまたはSyntasticを使用します(これを使用します):

病原体をインストールすることから始めます Syntasticを簡単にインストールできるようにします。以下のコマンドを実行して、 pathogen.vimを取得します ファイルと必要なディレクトリ:

# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

次に、これを〜/ .vimrcに追加します ファイル:

execute pathogen#infect()

病原体をインストールしたら、syntasticを〜/ .vim / bundleに入れることができます 次のように:

# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

次に、vimを閉じてバックアップを開始し、リロードしてから、次のコマンドを入力します。

:Helptags

すべてがうまくいけば、 ShellCheckが必要です Vimと統合 、次のスクリーンショットは、上記と同じスクリプトを使用してどのように機能するかを示しています。

ShellCheck –シェルスクリプトの警告と提案を表示するツール ShellCheck –シェルスクリプトの警告と提案を表示するツール

上記の手順を実行した後にエラーが発生した場合は、 Pathogenをインストールしていない可能性があります 正しく。手順をやり直しますが、これにより、次のことを確実に実行できます。

  • 両方の〜/ .vim / autoloadを作成しました および〜/ .vim / bundle ディレクトリ。
  • 〜/ .vimrc にexecute病原体#infect()行を追加しました ファイル。
  • 〜/ .vim / bundle内でsyntasticのgitクローンを作成しました 。
  • 適切な権限を使用して、上記のすべてのディレクトリにアクセスします。

他のエディターを使用して、次のようなシェルスクリプトの不正なコードをチェックすることもできます。

  • Emacs Flycheckを使用します 。
  • Sublimeでは、SublimeLinterを使用します。
  • Atomでは、Linterを利用します。
  • 他のほとんどのエディターでは、GCCエラー互換性を使用します。

注 :不正なコードのギャラリーを使用して、より多くのShellCheckingを実行します。

ShellCheck Githubリポジトリ:https://github.com/koalaman/shellcheck

それでおしまい!この記事では、 ShellCheckをインストールして使用する方法を示しました。 Linuxのシェルスクリプトのバグや不正なコードを見つけるため。以下のコメントセクションからご意見をお聞かせください。

他に似たようなツールを知っていますか?はいの場合は、コメントでもそれらに関する情報を共有してください。


  1. Windows および Mac 用の 10 の無料フローチャート ソフトウェア

    フローチャートはクールすぎると思いませんか?特に、仕事を楽に終わらせることができる最高のフローチャート ソフトウェアの 1 つを使用して作成する場合は特にそうです。オフィスでのプレゼンテーションであろうと、大学のプロジェクトであろうと、フローチャートは常にあなたの努力にさらなる優位性をもたらします。 テキストの長い段落をフローチャートと比較します。より読みやすく、理解しやすいと思いますか?もちろん、フローチャートです。フローチャートはプロセスを合理化し、何かを説明する最も重要な方法の 1 つです。フローチャートを使用すると、各ステップが明確で効果的であるため、プロセスを理解しやすくなります。

  2. Windows および Mac 用の 10 の無料フローチャート ソフトウェア

    フローチャートはクールすぎると思いませんか?特に、仕事を楽に終わらせることができる最高のフローチャート ソフトウェアの 1 つを使用して作成する場合は特にそうです。オフィスでのプレゼンテーションであろうと、大学のプロジェクトであろうと、フローチャートは常にあなたの努力にさらなる優位性をもたらします。 テキストの長い段落をフローチャートと比較します。より読みやすく、理解しやすいと思いますか?もちろん、フローチャートです。フローチャートはプロセスを合理化し、何かを説明する最も重要な方法の 1 つです。フローチャートを使用すると、各ステップが明確で効果的であるため、プロセスを理解しやすくなります。