Bashスクリプトでコマンドライン引数を処理する方法

How Handle Command Line Arguments Bash Script



多くの場合、bashスクリプトでは、スクリプトに入力オプションを提供するために引数値が必要です。 bashスクリプトでコマンドライン引数を処理するには、2つの方法があります。 1つは使用することです 引数変数 もう1つは getopts 関数。このチュートリアルでは、コマンドライン引数を処理する方法を示します。

引数変数の使用:

引数変数は$ 0から始まります。メインスクリプトファイル名は$ 0に格納され、コマンドライン引数から引数値を受け取ります。コマンドラインで2つの引数が渡された場合、引数の値は$ 1変数と$ 2変数で順番に受信されます。







例-1:引数として3つの数値を送信する

bashファイルを作成し、次のコードを追加します。スクリプトは3つの引数値を受け取り、$ 1、$ 2、および$ 3に格納します。引数の総数をカウントし、ループありとループなしの引数値を出力します。最後に、すべての引数値の合計を出力します。



#!/ bin / bash

#引数の総数を数える
捨てた '引数の総数:$#'

#引数値を個別に読み取る
捨てた '最初の引数値:$ 1'
捨てた '2番目の引数値:$ 2'
捨てた '3番目の引数値:$ 3'

#ループを使用して引数値を読み取る
にとってargval '[メール保護]'
NS
捨てた -NS '$ argval'
終わり

#引数値の追加
= $(((($ 1+$ 2+$ 3)。)。

#結果を出力する
捨てた -と 'NS合計の結果=$ sum'

3つの数値引数値を使用してbashファイルを実行します。



$bashcmdline1.sh50 35 15





例-2:ファイル名を引数として取る

bashファイルを作成し、次のコードを追加して、ファイルの合計文字数をカウントします。ここでは、ファイル名がコマンドライン引数として渡されます。

#!/ bin / bash
ファイル名=$ 1
totalchar=トイレ -NS $ filename
捨てた '文字の総数は$ totalchar'

ファイル名を単一の引数値としてbashスクリプトを実行し、別のコマンドを実行して、そのファイルの合計文字数を確認します。ここでは、employee.txtファイルが引数値として使用されます。 employee.txtファイルの合計文字数は204です。



$bashcmdline2.sh employee.txt
$トイレ -NSemployee.txt

getopts関数の使用:

データベースや任意のファイルにデータを保存したり、コマンドライン引数の値に基づいて特定の形式でレポートを作成したりする場合は、 getopts 関数は、タスクを実行するための最良のオプションです。これは組み込みのLinux関数です。したがって、スクリプトでこの関数を簡単に使用して、コマンドラインからフォーマットされたデータを読み取ることができます。

例-1:getopts関数による引数の読み取り

bashファイルを作成し、次のスクリプトを追加して、の使用法を理解します。 getopts 関数。 「getopts」関数は、コマンドライン引数オプションと引数値を読み取るためにwhileループとともに使用されます。ここでは、4つのオプションが使用されています。 「i」、「n」、「m」'と' 。 caseステートメントは、特定のオプションを照合し、引数値を変数に格納するために使用されます。最後に、変数の値を出力します。

#!/ bin / bash
その間 getopts ':私の中に:'怒り;NS
場合 $ arg
)。 ID=$ OPTARG;;
NS)。 名前=$ OPTARG;;
NS)。 製造日付=$ OPTARG;;
)。 有効期限=$ OPTARG;;
esac
終わり
捨てた -と 'NS$ ID $ Name $ Manufacturing_date $ Expire_dateNS'

次のオプションと引数値を使用してファイルを実行します。ここで、p100は-iオプションの値、「Hot Cake」は-nオプションの値、「01-01-2018」は-mオプションの値、「06-01-2018」は-の値です。 eオプション。

$bashcmdline3.sh-私p001-NS 「ホットケーキ」 -NS '01 -01-2018 ' -と '06 -01-2018 '

スクリプトで単純な値を送信する必要がある場合は、引数変数を使用することをお勧めします。ただし、フォーマットされた方法でデータを送信する場合は、getopts関数を使用して引数値を取得することをお勧めします。詳細については、をご覧ください ビデオ