Linuxで効果的なBashスクリプトを作成するための10の便利なヒント


シェルスクリプトは、Linuxで学習/実行できるプログラミングの最も簡単な形式です。さらに言えば、タスクを自動化し、ほんの数例を挙げると、新しい単純なユーティリティ/ツールを開発するためのシステム管理に必要なスキルです。

この記事では、効果的で信頼性の高いbashスクリプトを作成するための10の便利で実用的なヒントを共有します。

1.スクリプトでは常にコメントを使用する

これは、シェルスクリプトだけでなく、他のすべての種類のプログラミングにも適用される推奨される方法です。スクリプトにコメントを書くと、スクリプトを実行している他の人が、スクリプトのさまざまな部分の機能を理解するのに役立ちます。

手始めに、コメントは記号を使用して定義されます。

#TecMint is the best site for all kind of Linux articles

2.失敗したときにスクリプトを終了させる

特定のコマンドが失敗した場合でも、bashがスクリプトを実行し続け、スクリプトの残りの部分に影響を与える場合があります(最終的に論理エラーが発生する可能性があります)。コマンドが失敗したときにスクリプトを終了するには、次の行を使用します。

#let script exit if a command fails
set -o errexit 
OR
set -e

3. Bashが宣言されていない変数を使用する場合は、スクリプトを終了します

Bashは、論理エラーを引き起こす可能性のある宣言されていないスクリプトを使用しようとする場合もあります。したがって、次の行を使用して、宣言されていない変数を使用しようとしたときにスクリプトを終了するようにbashに指示します。

#let script exit if an unsed variable is used
set -o nounset
OR
set -u

4.二重引用符を使用して変数を参照する

参照中に二重引用符を使用すると(変数の値を使用)、単語の分割(空白に関して)や不要なグロブ(ワイルドカードの認識と展開)を防ぐのに役立ちます。

以下の例を確認してください。

#!/bin/bash
#let script exit if a command fails
set -o errexit 

#let script exit if an unsed variable is used
set -o nounset

echo "Names without double quotes" 
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
        echo "$name"
done
echo

echo "Names with double quotes" 
echo
for name in "$names"; do
        echo "$name"
done

exit 0

ファイルを保存して終了し、次のように実行します。

$ ./names.sh

5.スクリプトで関数を使用する

非常に小さなスクリプト(数行のコード)を除いて、常に関数を使用してコードをモジュール化し、スクリプトをより読みやすく再利用できるようにすることを忘れないでください。

関数を書くための構文は次のとおりです。

function check_root(){
	command1; 
	command2;
}

OR
check_root(){
	command1; 
	command2;
}

1行のコードの場合、次のように各コマンドの後に終了文字を使用します。

check_root(){ command1; command2; }

6.文字列の比較にはu003du003dの代わりにu003dを使用します

u003du003d u003d の同義語であるため、文字列の比較には単一の u003d のみを使用することに注意してください。次に例を示します。

value1=”tecmint.com”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7.置換に従来の「コマンド」の代わりに使用する

コマンド置換は、コマンドをその出力に置き換えます。コマンド置換には、バッククォート "command" の代わりに&#36(command)を使用します。

これは、シェルチェックツールでも推奨されます(シェルスクリプトの警告と提案を表示します)。例えば:

user=`echo “$UID”`
user=$(echo “$UID”)

8.読み取り専用を使用して静的変数を宣言します

静的変数は変更されません。スクリプトで定義すると、その値を変更することはできません。

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

9.環境変数には大文字の名前を使用し、カスタム変数には小文字を使用します

すべてのbash環境変数は大文字で名前が付けられているため、変数名の競合を避けるために、小文字を使用してカスタム変数に名前を付けます。

#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h  “$1”

10.常に長いスクリプトのデバッグを実行する

数千行のコードを含むbashスクリプトを作成している場合、エラーを見つけることは悪夢になる可能性があります。スクリプトを実行する前に問題を簡単に修正するには、デバッグを実行します。以下のガイドを読んで、このヒントをマスターしてください。

  1. How To Enable Shell Script Debugging Mode in Linux
  2. How to Perform Syntax Checking Debugging Mode in Shell Scripts
  3. How to Trace Execution of Commands in Shell Script with Shell Tracing

それで全部です!他に共有できるbashスクリプトのベストプラクティスはありますか?はいの場合は、以下のコメントフォームを使用してください。