script -e và crontab hoặc tại


1

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?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.