1.02.2標準
node1.conf、nodeA.conf、node_.confがある。
nodeの直後が数字ではない1文字の.confだけを選ぶ。
Bashのパターンとして適切なのはどれか。
× 不正解
Bashのglobで[!0-9]は数字以外の1文字に一致する。否定は角括弧式の先頭に置く。
詳細解説
誤り
node[0-9].conf数字1文字に一致するため、除外したいnode1.confを選ぶ。
誤り。[0-9]は数字を許可する集合であり、除外したいnode1.confへ一致する。
誤り
node?.conf数字かどうかを区別せず任意の1文字へ一致する。
誤り。?はnode1.conf、nodeA.conf、node_.confのすべてに一致し、数字を除外しない。
正しい
node[!0-9].conf角括弧先頭の!が数字範囲を否定し、数字以外の1文字へ一致する。
正しい。[!0-9]は数字範囲を否定し、Aや_のような数字以外の1文字を選ぶ。
誤り
node*.conf0文字以上へ一致し、数字1文字も複数文字も含める。
誤り。*は長さも文字種も制限しないため、数字を含む名前も選ぶ。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); touch "$tmp/node1.conf" "$tmp/nodeA.conf" "$tmp/node_.conf"; (cd "$tmp" && printf '%s\n' node[!0-9].conf); rm -rf "$tmp"期待される結果
nodeA.conf
node_.conf理解のポイント
- [!...]は否定集合
- 角括弧は1文字
- ?は種類を限定しない
確認時の注意
- 確認環境: Bash 5.x / 一時ディレクトリ
基礎のおさらい
否定集合
!を[の直後へ置くと、その後に示した集合以外の1文字へ一致する。
正規表現との違い
シェルglobと正規表現は似た記号を持つが、*などの意味が異なる。
問題IDKL-101-400
確認環境Bash 5.x / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告