Tôi có một shellscript tôi muốn chạy qua tại và sử dụng tập lệnh để chụp bản ghi. script -e đã được giới thiệu trong produc-linux-ng 2.18 và trả về giá trị của tiến trình con.
Tôi muốn nắm bắt giá trị trả về của lệnh tôi thực thi thông qua tập lệnh và phản ứng tương ứng.
$ 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
Tôi hy vọng kết quả ở trên vì "asdf1" không phải là một lệnh hợp lệ.
Tuy nhiên, nếu tôi chạy cùng một tập lệnh shell thông qua tại hoặc crontab, giá trị trả về bằng không.
$ crontab -l
40 17 * * * /tmp/b.sh
$ ls /tmp/RET0
/tmp/RET0
Ai đó có thể giúp tôi hiểu lý do tại sao điều này xảy ra và làm thế nào tôi có thể nhận được giá trị trả lại chính xác?