Chcę, aby moja powłoka wykryła ludzkie zachowanie, a następnie pokaż monit.sprawdź isatty w bash
Więc przyjmijmy, że nazwa pliku jest 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
Ale uważam, że to nie może działać, jeśli nie zostały ustawione PS1. Czy istnieje lepsza metoda?
moje metody badań:
./test.bash # human interactive
./test.bash > /tmp/test.log # stdout in batch mode
ls | ./test.bash # stdin in batch mode
Twoja próbka jest odpowiednia dla ** stdin ** case, dla ** stdout **, możemy użyć 'if [-t 1]'. –
najlepszą odpowiedzią byłoby 'if [-t 0] && [-t 1]' –
Dzięki za udostępnienie. Wydaje się to dobrym pomysłem. Kiedyś mniej znaczy więcej, czasami mniej jest po prostu mniej. Więc ... Czy jest to nowy paradygmat skryptów powłoki, którego nie jestem świadomy, czy twoja osobista opinia? Powodzenia wszystkim. – shellter