Open2

シェルスクリプト めも

tomisantomisan

比較演算子について

条件分岐を行う際の比較演算子の選択は、比較する値が数値か文字列かによって異なります。

文字列の比較

  • 文字列が同じであるかの比較
if [ $x = 100 ]; then

これは文字列比較です。変数xの値が文字列"100"と等しい場合に真となります。数値の比較ではないため、変数xが数値であっても文字列として扱われます。

  • 文字列が異なるかの比較
   if [ "$x" != "100" ]; then

文字列比較です。変数xの値が文字列"100"と等しくない場合に真となります。変数が展開される場合を考慮して、変数はダブルクォーテーションで囲むことが推奨されます。

数値の比較

数値の比較では=ではなく、-eqなどの演算子を使用する
例 $xが100と等しいか

if [ $x -eq 100 ]; then

数値比較には、以下の演算子を使用します:

-eq: 等しい
-ne: 等しくない
-gt: より大きい
-ge: 以上
-lt: より小さい
-le: 以下

例えば、変数xが100以上であるかどうかを確認するには以下のように書きます

if [ $x -ge 100 ]; then
    echo "$x は100以上です"
fi
tomisantomisan

変数

定義の仕方

シェルスクリプトの変数の定義の仕方
変数を使用する際には、=記号を使って変数に値を代入します
変数名の前には$を置くことで変数の値にアクセスできます

# 変数の定義
name="abcd"

# 変数の使用
echo $name

スコープ

変数のスコープについて
シェルスクリプトの変数には基本的に2つのスコープがある

  • ローカルスコープ
  • グローバルスコープ。

グローバルスコープ

スクリプトのどこからでもアクセスできる変数。

ローカルスコープ

関数内で定義された変数は、その関数内でのみアクセス可能です。
関数外部からはアクセスできません。
関数内で変数をローカルとして宣言するには、localキーワードを使用します。

# グローバル変数の定義
global_var="これはグローバルスコープです"

my_function() {
  # ローカル変数の定義
  local local_var="これはローカル変数"
  echo $local_var
}

echo $global_var # これは表示されます
echo $local_var # これは表示されない