rm -fをした場合のexit-statusについて
bash
において、rmコマンドを使った場合のexit statusについてです。初歩的なことだとは思いますが、自分への備忘録。
結論を先に書くと、rm $PATH_TO_FILE
をした時に$PATH_TO_FILE
が元々存在しない場合、-f
オプションがない場合はexit statusが1となり、-f
オプションがある場合は0となるので気をつけましょうということです。
~/dev/tmp$ ls ~/dev/tmp$ rm testfile rm cannot remove ‘testfile’ No such file or directory ~/dev/tmp$ echo $? 1 ~/dev/tmp$ rm -f testfile ~/dev/tmp$ echo $? 0
ちなみに、permission deniedなど他のエラーに関してはオプション関係なくexit statusは1になるっぽいです。
~/dev/tmp$ rm testdir/ rm: cannot remove ‘testdir/’: Is a directory ~/dev/tmp$ echo $? 1 ~/dev/tmp$ rm -f testdir/ rm: cannot remove ‘testdir/’: Is a directory ~/dev/tmp$ echo $? 1 ~/dev/tmp$ rm /initrd.img rm: cannot remove ‘/initrd.img’: Permission denied ~/dev/tmp$ echo $? 1 ~/dev/tmp$ rm -f /initrd.img rm: cannot remove ‘/initrd.img’: Permission denied ~/dev/tmp$ echo $? 1