ウェブサイト検索

Bashでフラグ付きの引数を取得する方法


BashはUnixおよびLinuxシステムで広く使用されているシェルおよびコマンド言語です。シェルスクリプトに引数を渡すためのさまざまな方法を提供しており、オプションの引数を渡すためのフラグの使用を含んでいます。この記事では、Bashでフラグを使って引数を取得する方法について説明します。

Bashでフラグを使った引数の取得

Bashでフラグ付きの引数を取得するには、「getopts」コマンドを使用できます。「getopts」コマンドは、コマンドラインのオプションと引数を解析するために使用できるBashの組み込み関数です。3つの引数を取ります:オプションの文字列、現在のオプションを格納する変数、および残りの引数を格納する変数の名前です。例を示します:

#!/bin/bash

while getopts ":x:y:" opt; do

case $opt in

x)

arg1="$OPTARG"

;;

y)

arg2="$OPTARG"

;;

\?)

echo "Invalid: -$OPTARG" >&2

;;

:)

echo "Option -$OPTARG requires an argument." >&2

;;

esac

done

shift $((OPTIND-1))

echo "Argument 1: $arg1"

echo "Argument 2: $arg2"

ここでは「getopts」コマンドを使用して、コマンドラインオプション「-x」と「-y」を解析しています。「:」という文字は各オプションの後にあり、そのオプションが引数を必要とすることを示しています。変数「opt」は現在のオプションを格納し、変数「arg1」と「arg2」は対応する引数を格納します。

「case」ステートメントは各オプションを処理するために使用されるので、オプションが「x」の場合、引数は「arg1」に格納されます。オプションが「y」の場合、引数は「arg2」に格納されます。無効なオプションが与えられた場合や、オプションが引数を必要としているにもかかわらず引数が与えられない場合には、エラーメッセージが表示されます。

OPTARGは、-xまたは-yオプションと一緒に渡される引数の値を保存するために使用され、OPTIND-1は、オプションとその引数を除外するために位置引数をシフトさせ、非オプション引数のみを残すために使用されます。

オプションを解析した後、"shift" コマンドが引数リストからオプションを削除するために使用されます。これにより、残りの引数が正しい変数に格納されます。フラグを使用してスクリプトを実行するには、次のようにフラグオプションと引数を用いてスクリプトを実行できます。

./<script-name> -<flag1> <argument1> -<flag2> <argument2>

結論

オプションの引数をBashスクリプトに渡すためにフラグを使用することで、スクリプトはより柔軟で強力になり、「getopts」コマンドを使用すれば、引数やコマンドラインオプションを簡単に解析できます。この文章の例に従うことで、自分のBashスクリプトにフラグを実装し、簡単に扱うことができます。