1

У меня есть шеллскрипт, через который я хочу запустить и использующий скрипт для захвата стенограммы. Скрипт -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

Может ли кто-нибудь помочь мне понять, почему это происходит, и как я могу получить правильное возвращаемое значение?

0