test コマンドの基本を理解する
Linux の test コマンドは、シェルスクリプトで条件を評価するための重要なツールです。このコマンドを使うと、ファイルの属性をチェックしたり、文字列の比較や数値の評価などを行うことができます。テスト対象の条件が真の場合、test は終了ステータスとして 0 を返し、それ以外の場合は非 0 の終了ステータスを返します。
まずは基本から始めましょう。まず、プロジェクトディレクトリに移動します。
cd ~/project
test コマンドは 2 つの方法で記述することができます。
test という単語の後に条件を記述する
- 条件を角括弧
[ ] で囲む
ディレクトリが存在するかどうかをチェックするために、両方の方法を試してみましょう。
## 方法 1: 'test' という単語を使用する
test -d ~/project && echo "The project directory exists."
## 方法 2: 角括弧を使用する
[ -d ~/project ] && echo "The project directory exists."
これらの両方のコマンドで、以下の出力が表示されるはずです。
The project directory exists.
-d オプションは、ディレクトリが存在するかどうかをチェックします。&& 演算子は、テスト条件が真の場合にのみ echo コマンドを実行するために使用されます。
一般的なファイルテストオプションには以下のようなものがあります。
-d file: ファイルが存在し、ディレクトリである場合に真
-e file: ファイルが存在する場合に真
-f file: ファイルが存在し、通常のファイルである場合に真
-r file: ファイルが存在し、読み取り可能である場合に真
-w file: ファイルが存在し、書き込み可能である場合に真
-x file: ファイルが存在し、実行可能である場合に真
-s file: ファイルが存在し、サイズが 0 より大きい場合に真
テストファイルを作成し、その属性をチェックしてみましょう。
## テストファイルを作成する
echo "Hello, Linux condition testing!" > test_file.txt
## ファイルが存在するかどうかをチェックする
test -e test_file.txt && echo "The file exists."
## ファイルが読み取り可能かどうかをチェックする
[ -r test_file.txt ] && echo "The file is readable."
## ファイルが空でないかどうかをチェックする
[ -s test_file.txt ] && echo "The file is not empty."
これらのコマンドは、以下の出力を生成するはずです。
The file exists.
The file is readable.
The file is not empty.
次に、test コマンドを使用してファイルが存在するかどうかをチェックし、存在しない場合は作成する簡単なシェルスクリプトを作成しましょう。
## スクリプトファイルを作成する
cat > check_file.sh << 'EOF'
#!/bin/bash
FILENAME="status.txt"
if [ ! -e "$FILENAME" ]; then
echo "File $FILENAME does not exist. Creating it now."
echo "This is a status file." > "$FILENAME"
else
echo "File $FILENAME already exists."
fi
## ファイルの内容を表示する
echo "Content of $FILENAME:"
cat "$FILENAME"
EOF
## スクリプトを実行可能にする
chmod +x check_file.sh
## スクリプトを実行する
./check_file.sh
スクリプトを実行すると、以下のような出力が表示されるはずです。
File status.txt does not exist. Creating it now.
Content of status.txt:
This is a status file.
再度スクリプトを実行すると、以下のように表示されます。
File status.txt already exists.
Content of status.txt:
This is a status file.
これは、test コマンドを使用してファイルの存在をチェックし、結果に基づいて異なるアクションを実行する方法を示しています。