ablog

不器用で落着きのない技術者のメモ

実行時に自分自身を書き換えるシェルスクリプト

$ cat hoge.sh
#!/bin/bash

cat <<EOF > $0
#!/bin/bash
exit 1
EOF

exit 0
$ ./hoge.sh
$ echo $?
0
$ ./hoge.sh
$ echo $?
1
$ cat hoge.sh
#!/bin/bash
exit 1

初回実行時は戻り値が 0 だが、2 回目以降は戻り値が 1 になる。