У меня есть шеллскрипт, через который я хочу запустить и использующий скрипт для захвата стенограммы. Скрипт -e был введен в util-linux-ng 2.18 и возвращает ответное слово дочернего процесса.
Я хочу зафиксировать возвращаемое значение команды, которую я выполняю через скрипт, и реагировать соответствующим образом.
$ cat /tmp/b.sh
#!/bin/bash
script -qea /tmp/out.txt -c asdfl
if [ $? -eq 0 ]; then
touch /tmp/RET0
else
touch /tmp/RETNOT0
fi
$ /tmp/b.sh
bash: asdfl: command not found
$ ls /tmp/RETNOT0
/tmp/RETNOT0
Я ожидаю результат выше, потому что "asdf1" не является допустимой командой.
Однако, если я запускаю тот же сценарий оболочки через at или crontab, возвращаемое значение равно нулю.
$ crontab -l
40 17 * * * /tmp/b.sh
$ ls /tmp/RET0
/tmp/RET0
Может ли кто-нибудь помочь мне понять, почему это происходит, и как я могу получить правильное возвращаемое значение?