Потерял почти целый рабочий день на одном странном затыке.
Задача. У нас есть обычный текстовый файл, в нем N строчек. Нужно запустить некоторое приложение также N раз, передав ему в качестве параметра очередную строчку из упомянутого файла. Казалось бы, что может быть проще?
#!/bin/bash
(
Read more... )
Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell
То есть, если запускаемый хочет STDIN, он таки его получит не из /dev/null, а таки из того, кто был родителем на время старта.
Reply
Reply
Нормальный grep или там sed будет брать параметры из cli, и только если их нет. займётся STDIN.
Но это же для сторонних утилит, скажем мягко, не совсем так. О чём думал автор, обычно загадка.
Поэтому, да, если сам держишь в скрипте STDIN, приходится заботиться о том, чтобы не отдать его кому-нибудь ненароком после fork.
Я последнее время даже trap не ленюсь писать в shell :)
Reply
Reply
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
Reply
delete_temp_dir() {
if [ -d "${TMP_DIR}" ] ; then
rm -rf "${TMP_DIR}"/* && rmdir "${TMP_DIR}"
else
return 0
fi
}
....
trap delete_temp_dir 0 INT TERM QUIT
Reply
Reply
Reply
Reply
Reply
Leave a comment