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;
}
単一行のコードの場合、各コマンドの後に次のように終了文字を使用します。
check_root(){ command1; command2; }
6. 文字列の比較には==の代わりに=を使用してください。
注意してください、== は = の同義語であるため、文字列の比較には単一の = を使用してください。例えば:
value1=”linux-console.net”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]
7. 置換のために従来の「コマンド」の代わりに $(コマンド)を使用してください。
コマンド置換は、コマンドをその出力で置き換えます。コマンド置換のために、バッククォート`command`の代わりに$(command)を使用してください。
これはシェルスクリプトの警告や提案を表示するshellcheckツールによっても推奨されています。例えば:
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. 長いスクリプトのデバッグは常に行うこと
何千行ものコードを含むバッシュスクリプトを書いている場合、エラーを見つけることは悪夢になるかもしれません。スクリプトを実行する前に簡単に問題を修正するためには、いくつかのデバッグを行います。以下のガイドを読みながらこのヒントをマスターしてください:
- Linuxでシェルスクリプトのデバッグモードを有効にする方法
- シェルスクリプトで構文チェックのデバッグモードを実行する方法
- シェルトレースを使用してシェルスクリプトのコマンドの実行を追跡する方法
それがすべてです! 他に共有したいベスト Bash スクリプトの実践方法はありますか? もしあれば、下のコメントフォームを使用してください。
