はじめに
この実験では、Linux でシェル変数を扱う方法を学びます。シェル変数は、シェルスクリプトでデータを格納および操作するために不可欠です。数値、文字、または文字列など、さまざまな種類の値を保持することができます。この実験では、シェル変数の作成、参照、および使用方法を学び、シェルスクリプトの堅牢な基礎を築きます。
この実験では、Linux でシェル変数を扱う方法を学びます。シェル変数は、シェルスクリプトでデータを格納および操作するために不可欠です。数値、文字、または文字列など、さまざまな種類の値を保持することができます。この実験では、シェル変数の作成、参照、および使用方法を学び、シェルスクリプトの堅牢な基礎を築きます。
シェル変数は、=
記号を使って値を割り当てることで作成されます。いくつかの変数を定義するシンプルなシェルスクリプトを作成して始めましょう。
WebIDE(VS Code)でターミナルを開きます。
/home/labex/project
ディレクトリに variables.sh
という名前の新しいファイルを作成します。
touch /home/labex/project/variables.sh
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
:複数の空白を含む文字列型の変数ファイルを保存します。
スクリプトを実行可能にします。
chmod +x /home/labex/project/variables.sh
スクリプトを実行します。
./variables.sh
次の出力が表示されるはずです。
Price per apple: 5
My first letters: ABC
Greeting: Hello world!
greeting
変数の余分な空白は、変数を定義する際にシングルクォートを使い、echo 文ではクォートを使わない場合に出力に残りますことに注意してください。
シェル変数を参照する際、特殊な構文を使用する必要があるシナリオがいくつかあります。これらのケースを調べてみましょう。
WebIDE で variables.sh
ファイルを開きます。
ファイルの内容を次のものに置き換えます。
#!/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"
ファイルを保存します。
スクリプトを実行します。
./variables.sh
次の出力が表示されるはずです。
The price of an Apple today is: $HK 5
The first 10 letters in the alphabet are: ABCDEFGHIJ
Hello world!
Hello world!
違いに注意してください。
$
記号がエスケープされています。{}
が使用されて変数名が明確に定義されています。コマンド置換を使うと、コマンドの出力を変数の値として使用できます。これは、コマンドを $()
または逆引用符(``)で囲むことで行われます。
WebIDE で variables.sh
ファイルを開きます。
ファイルの末尾に次の内容を追加します。
## コマンド置換
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"
ファイルを保存します。
スクリプトを実行します。
./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 は算術演算を行うための $((式))
構文を提供しています。
/home/labex/project
ディレクトリに arithmetic.sh
という名前の新しいファイルを作成します。
touch /home/labex/project/arithmetic.sh
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"
ファイルを保存します。
スクリプトを実行可能にします。
chmod +x /home/labex/project/arithmetic.sh
スクリプトを実行します。
./arithmetic.sh
次の出力が表示されるはずです。
10 と 5 の和は: 15
10 と 5 の差は: 5
10 と 5 の積は: 50
10 を 5 で割った商は: 2
10 を 5 で割った余りは: 0
インクリメント後、X は現在: 11
デクリメント後、Y は現在: 4
このスクリプトは、シェル変数を使ったさまざまな算術演算を示しています。
環境変数は、現在のシェルセッションで実行されているすべてのプロセスに利用可能な変数の一種です。いくつかの一般的な環境変数と、独自の環境変数を作成する方法を調べてみましょう。
/home/labex/project
ディレクトリに environment.sh
という名前の新しいファイルを作成します。
touch /home/labex/project/environment.sh
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"
ファイルを保存します。
スクリプトを実行可能にします。
chmod +x /home/labex/project/environment.sh
スクリプトを実行します。
./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 とシェルスクリプトの学習を続ける際、変数はデータの保存と操作に強力なツールであることを忘れないでください。スクリプトで変数を使って練習することで、コードをより柔軟で再利用可能にしましょう。