Ваша функция handleChange требует e, но ваша модель передает ее e.target.value.
Вы могли поставить "капкан" для выполнения на выходе или на управлении-c для чистки.
trap "{ rm -f $LOCKFILE; }" EXIT
С другой стороны, один из моих любимых измов Unix должен открыть файл и затем удалить его, в то время как у Вас все еще есть он открытый. Файл остается в файловой системе, и можно считать и записать это, но как только программа выходит, файл уходит. Не уверенный, как Вы сделали бы это в ударе, все же.
BTW: Один аргумент я дам в пользу mktemp вместо того, чтобы использовать Ваше собственное решение: если пользователь ожидает, что Ваша программа собирается создать огромные временные файлы, он мог бы хотеть набор TMPDIR
к где-нибудь больше, как/var/tmp. mktemp распознает, что, Ваше скрученное вручную решение (вторая опция) не делает. Я часто использую TMPDIR=/var/tmp gvim -d foo bar
, например.
Я обычно создаю каталог, в котором можно поместить все мои временные файлы, и затем сразу после, создать обработчик ВЫХОДОВ для чистки этого каталога, когда сценарий выходит.
MYTMPDIR=$(mktemp -d)
trap "rm -rf $MYTMPDIR" EXIT
Если Вы помещаете все свои временные файлы под $MYTMPDIR
, затем они будут все удалены, когда Ваш сценарий выйдет при большинстве обстоятельств. Уничтожение процесса с SIGKILL (уничтожают-9) уничтожает процесс сразу же, хотя, таким образом, Ваш обработчик ВЫХОДОВ не будет работать в этом случае.
Вы хотите использовать команду прерывания для обработки выхода из сценария или сигналов как CTRL-C. Посмотрите Wiki Greg для деталей.
Для Вашего tempfiles, с помощью basename $0
хорошая идея, а также обеспечение шаблона, который обеспечивает комнату для достаточного количества временных файлов:
tempfile() {
tempprefix=$(basename "$0")
mktemp /tmp/${tempprefix}.XXXXXX
}
TMP1=$(tempfile)
TMP2=$(tempfile)
trap 'rm -f $TMP1 $TMP2' EXIT
Вы не должны потрудиться удалять те tmp файлы, созданные с mktemp. Они будут удалены так или иначе позже.
Используйте mktemp, если Вы можете, поскольку он генерирует более уникальные файлы затем префикс '$$'. И похоже, что больше кросс-платформенного способа создать временные файлы затем явно поместило их в/tmp.
Альтернатива для использования предсказуемого имени файла с $$ является зияющей дырой в системе безопасности, и Вы никогда никогда не должны, думать об использовании его. Даже если это - просто простой персональный сценарий на Вашем отдельном пользователе ПК. Это - очень дурная привычка, которую Вы не должны получать. BugTraq полон "небезопасного временного файла" инциденты. Посмотрите здесь, здесь и здесь для получения дополнительной информации об аспекте безопасности временных файлов.
Я первоначально думал о заключении в кавычки небезопасного TMP1 и присвоений TMP2, но вообще-то, если задуматься который, вероятно, не будет хорошей идеей.