【Linux】シェルスクリプトとは?

Linux

どーも!marusukeです!

シェルコマンドをまとめて実行することができる、シェルスクリプトについて説明します!

シェルスクリプトでできること

シェルスクリプトは、シェルコマンドをまとめて自動化するためのスクリプト言語です。複数のコマンドを一つのファイルに記述することで、一連の作業を自動化し、手動の入力を減らすことができます。Linuxの一般的なシェル(bash、sh、zshなど)で実行されます

一般的な用途

  • ファイル操作やテキスト処理の自動化
  • システム管理作業の効率化(ログ解析、バックアップ取得など)
  • 簡単なプログラムの作成やジョブの自動実行など

などが挙げられます

シェルスクリプトの使用例

以下は、基本的なシェルスクリプトの例です

#!/bin/bash
# シェルスクリプトの例:指定したディレクトリ内のファイル数をカウントする

# ディレクトリを指定($1が未定義ならカレントディレクトリを使用する)
directory=${1:-.}

# ファイル数をカウントして出力
file_count=$(ls -1 "$directory" | wc -l)
echo "ディレクトリ '$directory' には $file_count 件のファイルがあります。"

出力結果

$ ./count_files.sh /path/to/directory
ディレクトリ '/path/to/directory' には 10 件のファイルがあります。

説明

  1. #!/bin/bash は、このスクリプトがbashで実行されることを指定します
  2. $1 は、スクリプトに渡される一つ目の引数(ディレクトリパス)です。もし、未定義ならデフォルトのカレントディレクトリを使用します(:-はデフォルト値を設定する記法)
  3. ls -1 は指定されたディレクトリの内容をリストし、wc -l はその数を数えます

引数の参照方法

シェルスクリプトの引数を参照するための特殊変数は以下です

変数説明
$1, $2, ...スクリプトに渡されたそれぞれの引数を参照します($3は3つ目の引数、、など)
$0スクリプトの名前(コマンド名)を示します
$#渡された引数の数を示します
$@渡されたすべての引数を個別に展開します(ダブルクォート内でも個別の引数として扱われる)
$*渡されたすべての引数を1つの文字列として展開します(ダブルクォート内では1つの引数として扱われる)
$?最後に実行されたコマンドの終了ステータスを示します(0は成功、0以外は失敗)

制御構文

シェルスクリプトは、その中で様々なシェルコマンドや制御構文を使えます。以下は、よく使われるシェルスクリプトの制御構文です

設定項目説明
if-then-else条件分岐を行います
for, while繰り返し処理を行います
case複数の条件に応じて異なる処理を行います
function関数を定義して再利用可能な処理をまとめます
readユーザ入力を受け取る際に使用します
echoメッセージを出力します
> または >>出力をファイルにリダイレクトします。> は上書き、>> は追記
$(command)コマンド置換。内部で実行されたコマンドの出力を取得して使用できます

if-then-elseについては以下の構文をご覧ください

for文については以下の記事を書きましたのでご覧ください

case文については以下の記事をご覧ください

基本的なシェルスクリプトの実行方法

シェルスクリプトは次の手順で実行します:

  1. スクリプトファイルを作成し、.sh 拡張子をつけて保存。
  2. 実行権限を付与:
   chmod +x script_name.sh
  1. スクリプトを実行:
   ./script_name.sh

シェルスクリプトは、日常的なタスクを効率化し、作業を自動化するために役立ちます

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました