105.2基礎
$CONFIGが存在し、通常ファイルである場合だけ処理を続ける。
testコマンドの適切な条件はどれか。
× 不正解
-fは対象が存在する通常ファイルなら真になる。ディレクトリ、実行可能性、文字列長を調べる-d、-x、-zとは判定対象が異なる。
詳細解説
正しい
[ -f "$CONFIG" ]パスが存在して通常ファイルなら真になる。
正しい。-fは指定パスが存在し通常ファイルである場合に真となり、設問の2条件をまとめて確認できる。
誤り
[ -d "$CONFIG" ]ディレクトリであるかを判定する。
誤り。-dはディレクトリを要求するため、通常ファイルである設定ファイルには偽となる。
誤り
[ -x "$CONFIG" ]実行可能であるかを判定し、通常ファイル性だけは保証しない。
誤り。-xは実行アクセスの可否を調べる条件で、通常ファイルかどうかや設定ファイルとしての存在条件とは異なる。
誤り
[ -z "$CONFIG" ]展開した文字列の長さが0かを判定する。
誤り。-zは後続の文字列が空かを調べ、文字列に格納されたパスの先にファイルがあるかは検査しない。
実際に確かめる
一時的な検証環境で実行できる例です。
file=$(mktemp); if [ -f "$file" ]; then printf regular; fi; rm -f -- "$file"期待される結果
regular理解のポイント
- -fは通常ファイル
- パス展開は引用
- -dはディレクトリ
確認時の注意
- 確認環境: POSIX互換test / 一時ファイル
基礎のおさらい
単項ファイル演算子
-eは種類を問わない存在、-r、-w、-xは現在のプロセスから見たアクセス可否を検査する。
引用
[ -f "$CONFIG" ]のように引用すると、空白を含むパスや空変数でもtestの引数数を保てる。
問題IDKP-105-626
確認環境POSIX互換test / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告