103.4標準
入力が空ならecho RUNを一度も実行しない。
入力項目がある場合だけ、その項目を付けてecho RUNを実行する。GNU xargsを使う。
適切な指定はどれか。
× 不正解
GNU xargsの-r(--no-run-if-empty)は、空入力時にコマンドを起動しない。副作用を持つコマンドで特に重要である。
詳細解説
誤り
xargs echo RUNGNU xargsの既定では入力が空でもecho RUNを1回実行する。
空でもecho RUNを1回実行する。
誤り
xargs -n 1 echo RUN引数数を制御するだけで、空入力時の既定実行を止めない。
引数数だけを制限し、空入力対策にならない。
誤り
xargs -P 1 echo RUN並列数を1にするだけで、空入力時の動作を変えない。
並列数だけを制限する。
正しい
xargs -r echo RUN-rにより入力項目がない場合はコマンドを実行しない。
正解。空入力なら実行を完全に省く。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '' | xargs -r echo RUN; printf DONE期待される結果
DONE理解のポイント
- -rは空入力で実行しない
- GNU xargsの既定は1回実行
- 副作用の不要な発生を防ぐ
確認時の注意
- 確認環境: GNU findutils 4.x
- GNU findutilsのxargsを前提とする。
基礎のおさらい
副作用
削除や通知のようなコマンドでは、入力0件時の意図しない実行を-rで防げる。
移植性
-rはGNU xargsでは利用できるが、他実装では既定動作や対応状況が異なる。
問題IDKP-103-076
確認環境GNU findutils 4.x
最終技術確認2026-08-12
誤り・権利侵害を報告