Tôi muốn vỏ của mình phát hiện nếu hành vi của con người, sau đó hiển thị lời nhắc.kiểm tra đẳng cấp trong bash
Vì vậy, giả sử tên tập tin là test.bash
#!/bin/bash
if [ "x" != "${PS1:-x}" ] ;then
read -p "remove test.log Yes/No" x
[ "$x" = "n" ] && exit 1
fi
rm -f test.log
Nhưng, tôi thấy nó không thể làm việc nếu tôi đã không được thiết lập PS1. Có phương pháp tốt hơn không?
phương pháp thử nghiệm của tôi:
./test.bash # human interactive
./test.bash > /tmp/test.log # stdout in batch mode
ls | ./test.bash # stdin in batch mode
Mẫu của bạn phù hợp với trường hợp ** stdin **, đối với ** stdout **, chúng tôi có thể sử dụng 'if [-t 1]'. –
để có câu trả lời hay nhất là 'if [-t 0] && [-t 1]' –
Cảm ơn bạn đã chia sẻ. Điều này có vẻ như là một ý tưởng hay. Thỉnh thoảng ít hơn, đôi khi ít hơn là ít hơn. Vậy ... Đây có phải là một mô hình mới trong kịch bản vỏ mà tôi không biết hoặc ý kiến cá nhân của bạn? Chúc mọi người may mắn. – shellter