シェル変数の操作

ShellShellBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux でシェル変数を扱う方法を学びます。シェル変数は、シェルスクリプトでデータを格納および操作するために不可欠です。数値、文字、または文字列など、さまざまな種類の値を保持することができます。この実験では、シェル変数の作成、参照、および使用方法を学び、シェルスクリプトの堅牢な基礎を築きます。

シェル変数を作成する

シェル変数は、= 記号を使って値を割り当てることで作成されます。いくつかの変数を定義するシンプルなシェルスクリプトを作成して始めましょう。

  1. WebIDE(VS Code)でターミナルを開きます。

  2. /home/labex/project ディレクトリに variables.sh という名前の新しいファイルを作成します。

    touch /home/labex/project/variables.sh
  3. WebIDE で variables.sh ファイルを開き、次の内容を追加します。

    #!/bin/bash
    
    PRICE_PER_APPLE=5
    MyFirstLetters=ABC
    greeting='Hello        world!'
    
    echo "Price per apple: $PRICE_PER_APPLE"
    echo "My first letters: $MyFirstLetters"
    echo "Greeting: $greeting"

    このスクリプトでは、3つの変数を作成しています。

    • PRICE_PER_APPLE:整数型の変数
    • MyFirstLetters:文字列型の変数
    • greeting:複数の空白を含む文字列型の変数
  4. ファイルを保存します。

  5. スクリプトを実行可能にします。

    chmod +x /home/labex/project/variables.sh
  6. スクリプトを実行します。

    ./variables.sh

    次の出力が表示されるはずです。

    Price per apple: 5
    My first letters: ABC
    Greeting: Hello        world!

    greeting 変数の余分な空白は、変数を定義する際にシングルクォートを使い、echo 文ではクォートを使わない場合に出力に残りますことに注意してください。

シェル変数を参照する

シェル変数を参照する際、特殊な構文を使用する必要があるシナリオがいくつかあります。これらのケースを調べてみましょう。

  1. WebIDE で variables.sh ファイルを開きます。

  2. ファイルの内容を次のものに置き換えます。

    #!/bin/bash
    
    PRICE_PER_APPLE=5
    MyFirstLetters=ABC
    greeting='Hello        world!'
    
    ## 特殊文字のエスケープ
    echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE"
    
    ## 曖昧さを避ける
    echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ"
    
    ## 空白を維持する
    echo $greeting
    echo "$greeting"
  3. ファイルを保存します。

  4. スクリプトを実行します。

    ./variables.sh

    次の出力が表示されるはずです。

    The price of an Apple today is: $HK 5
    The first 10 letters in the alphabet are: ABCDEFGHIJ
    Hello world!
    Hello        world!

    違いに注意してください。

    • 1行目では、文字通りに表示するために $ 記号がエスケープされています。
    • 2行目では、波括弧 {} が使用されて変数名が明確に定義されています。
    • 最後の2行は、空白を含む変数を参照する際の引用符の使用と非使用の違いを示しています。

コマンド置換

コマンド置換を使うと、コマンドの出力を変数の値として使用できます。これは、コマンドを $() または逆引用符(``)で囲むことで行われます。

  1. WebIDE で variables.sh ファイルを開きます。

  2. ファイルの末尾に次の内容を追加します。

    ## コマンド置換
    CURRENT_DATE=$(date +"%Y-%m-%d")
    echo "Today's date is: $CURRENT_DATE"
    
    FILES_IN_DIR=$(ls)
    echo "Files in the current directory:"
    echo "$FILES_IN_DIR"
    
    UPTIME=$(uptime -p)
    echo "System uptime: $UPTIME"
  3. ファイルを保存します。

  4. スクリプトを実行します。

    ./variables.sh

    次のような出力が表示されるはずです(実際の値はシステムによって異なります)。

    Today's date is: 2023-08-16
    Files in the current directory:
    variables.sh
    System uptime: up 2 hours, 15 minutes

    この例では:

    • $(date +"%Y-%m-%d")date コマンドを実行し、その出力をキャプチャします。
    • $(ls)ls コマンドを実行し、その出力をキャプチャします。
    • $(uptime -p)-p オプション付きで uptime コマンドを実行し、その出力をキャプチャします。

算術演算

シェル変数は算術演算でも使用できます。Bash は算術演算を行うための $((式)) 構文を提供しています。

  1. /home/labex/project ディレクトリに arithmetic.sh という名前の新しいファイルを作成します。

    touch /home/labex/project/arithmetic.sh
  2. WebIDE で arithmetic.sh ファイルを開き、次の内容を追加します。

    #!/bin/bash
    
    X=10
    Y=5
    
    ## 加算
    SUM=$((X + Y))
    echo "$X と $Y の和は: $SUM"
    
    ## 減算
    DIFF=$((X - Y))
    echo "$X と $Y の差は: $DIFF"
    
    ## 乗算
    PRODUCT=$((X * Y))
    echo "$X と $Y の積は: $PRODUCT"
    
    ## 除算
    QUOTIENT=$((X / Y))
    echo "$X を $Y で割った商は: $QUOTIENT"
    
    ## 剰余
    REMAINDER=$((X % Y))
    echo "$X を $Y で割った余りは: $REMAINDER"
    
    ## インクリメント
    X=$((X + 1))
    echo "インクリメント後、X は現在: $X"
    
    ## デクリメント
    Y=$((Y - 1))
    echo "デクリメント後、Y は現在: $Y"
  3. ファイルを保存します。

  4. スクリプトを実行可能にします。

    chmod +x /home/labex/project/arithmetic.sh
  5. スクリプトを実行します。

    ./arithmetic.sh

    次の出力が表示されるはずです。

    10 と 5 の和は: 15
    10 と 5 の差は: 5
    10 と 5 の積は: 50
    10 を 5 で割った商は: 2
    10 を 5 で割った余りは: 0
    インクリメント後、X は現在: 11
    デクリメント後、Y は現在: 4

    このスクリプトは、シェル変数を使ったさまざまな算術演算を示しています。

環境変数の使用

環境変数は、現在のシェルセッションで実行されているすべてのプロセスに利用可能な変数の一種です。いくつかの一般的な環境変数と、独自の環境変数を作成する方法を調べてみましょう。

  1. /home/labex/project ディレクトリに environment.sh という名前の新しいファイルを作成します。

    touch /home/labex/project/environment.sh
  2. WebIDE で environment.sh ファイルを開き、次の内容を追加します。

    #!/bin/bash
    
    ## いくつかの一般的な環境変数を表示する
    echo "ホームディレクトリ: $HOME"
    echo "現在のユーザー: $LOGNAME"
    echo "使用中のシェル: $SHELL"
    echo "現在のパス: $PATH"
    
    ## 新しい環境変数を作成する
    export MY_VARIABLE="Hello from my variable"
    
    ## 新しい変数を表示する
    echo "私の新しい変数: $MY_VARIABLE"
    
    ## 子プロセスを作成して変数のスコープを示す
    bash -c 'echo "子プロセス内の MY_VARIABLE: $MY_VARIABLE"'
    
    ## 環境変数を削除する
    unset MY_VARIABLE
    
    ## 変数が削除されたことを確認する
    echo "削除後の MY_VARIABLE: $MY_VARIABLE"
  3. ファイルを保存します。

  4. スクリプトを実行可能にします。

    chmod +x /home/labex/project/environment.sh
  5. スクリプトを実行します。

    ./environment.sh

    次のような出力が表示されるはずです(実際の値はシステムによって異なります)。

    ホームディレクトリ: /home/labex
    現在のユーザー: labex
    使用中のシェル: /bin/zsh
    現在のパス: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    私の新しい変数: Hello from my variable
    子プロセス内の MY_VARIABLE: Hello from my variable
    削除後の MY_VARIABLE:

    このスクリプトは、既存の環境変数にアクセスし、新しい環境変数を作成し、削除する方法を示しています。

まとめ

この実験では、Linux でシェル変数を扱う方法を学びました。変数の作成と参照、コマンドの出力を変数に割り当てるためのコマンド置換の使用、変数を使った算術演算、および環境変数の扱い方を調べました。これらのスキルは、シェルスクリプトの重要な基礎を形成し、Linux システムを使い続ける上で非常に役立ちます。

この実験の主な要点は以下の通りです。

  • シェル変数の作成と参照
  • さまざまなシナリオでの変数参照に特殊な構文を使用する
  • コマンドの出力をキャプチャするためのコマンド置換の利用
  • シェル変数を使った算術演算
  • 環境変数の扱い方

Linux とシェルスクリプトの学習を続ける際、変数はデータの保存と操作に強力なツールであることを忘れないでください。スクリプトで変数を使って練習することで、コードをより柔軟で再利用可能にしましょう。