GNU/Linux >> Linux の 問題 >  >> Linux

2 つのサンプル シェル スクリプトで説明されている Bash の位置パラメータ

パラメータは、値を格納するエンティティです。名前、数字、またはいくつかの特殊文字を指定できます。変数は、名前で示されるパラメーターです。いくつかの変数はすでに設定されており、これらのほとんどは値を割り当てることができません。

これらの変数には、シェル スクリプトが実行中の環境を知るために使用できる有用な情報が含まれています。

Bash には 2 種類のパラメータが用意されています。

  • 位置パラメータ
  • 特殊パラメータ

この記事では、bash の位置パラメーターについて例を挙げて説明します。

この記事は、進行中の bash チュートリアル シリーズの一部です。

例 1:Bash 位置パラメータ – $0、$1、$2 ..

位置パラメータは、スクリプトが呼び出されたときにスクリプトに与えられる引数です。 $1 から $N の範囲である可能性があります。 N が 1 桁以上の場合、${N} のように中括弧で囲む必要があります。

変数 $0 はベース名です

次の例では、2 つの引数を取得し、これら 2 つの整数の間の算術演算結果を提供します。

まず、以下に示すように、算術.sh シェル スクリプトを作成します。

$ cat arithmetic.sh
#!/bin/bash

echo -e  "\$1=$1"
echo -e "\$2=$2"

let add=$1+$2
let sub=$1-$2
let mul=$1*$2
let div=$1/$2

echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"

次に、以下に示すように、適切なパラメーターを指定して Math.sh を実行します。

$ ./arithmetic.sh 12 10
$1=12
$2=10
Addition=22
Subtraction=2
Multiplication=120
Division=1

上記の出力では、$1 の値は 12 で、$2 の値は 10 です。

シェル組み込みの「let」を使用すると、シェル変数に対して算術演算を実行できます。上記のスクリプトは、指定されたパラメーターに対して加算、減算、乗算、除算などの算術演算を実行します。

例 2:Bash 位置パラメータの設定/設定解除

組み込みの set コマンドを使用して、位置パラメーターを設定および設定解除します。

まず、以下に示すように positional.sh シェル スクリプトを作成します。

$ cat positional.sh
#!/bin/bash

# From command line
echo -e "Basename=$0"
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# From Set builtin
set First Second Third
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# Store positional parameters with -(hyphen)
set - -f -s -t
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# Unset positional parameter
set --
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

上記のスクリプトは、最初にコマンド ライン引数を出力し、次に set コマンドが位置パラメータを明示的に設定します。 – を使用して設定すると、オプションの末尾が参照されます。後続のすべての引数は、'-' で始まる場合でも位置パラメーターです。他の引数なしで「–」で設定すると、すべての位置パラメータが設定解除されます。

次に、以下のように positional.sh を実行します。

$ ./positional.sh
Basename=t.sh
$1=12
$2=10
$3=
$1=First
$2=Second
$3=Third
$1=-f
$2=-s
$3=-t
$1=
$2=
$3=

次の記事では、bash の特殊パラメーターについて例を挙げて説明しましょう。


Linux
  1. Bash -cと位置パラメータ?

  2. Bashシェルスクリプトで改行をエコーする方法

  3. シェル スクリプトのコマンド ライン パラメータ

  1. bash シェル スクリプトを別のコマンド ライン プログラムと対話させることは可能ですか?

  2. 引数が bash シェルで有効な日付かどうかを確認する

  3. スクリプト内の bash シェル スクリプトおよび関数の変数スコープ

  1. 複数のシェルスクリプト間で変数を共有しますか?

  2. 4 つのサンプル シェル スクリプトで説明されている Bash の特別なパラメーター

  3. シェルで 10 個を超えるパラメーターを処理する方法