どーも!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 件のファイルがあります。
説明
#!/bin/bash
は、このスクリプトがbashで実行されることを指定します$1
は、スクリプトに渡される一つ目の引数(ディレクトリパス)です。もし、未定義ならデフォルトのカレントディレクトリを使用します(
はデフォルト値を設定する記法):-
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文については以下の記事をご覧ください
基本的なシェルスクリプトの実行方法
シェルスクリプトは次の手順で実行します:
- スクリプトファイルを作成し、
.sh
拡張子をつけて保存。 - 実行権限を付与:
chmod +x script_name.sh
- スクリプトを実行:
./script_name.sh
シェルスクリプトは、日常的なタスクを効率化し、作業を自動化するために役立ちます
以上です!
ここまで読んでいただきありがとうございました!
コメント