我想讓我的shell檢測人類行爲,然後顯示提示。在bash中檢查isatty
因此,假設文件名是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
但是,我發現,如果我沒有設置PS1它不能正常工作。有更好的方法嗎?
我的測試方法:
./test.bash # human interactive
./test.bash > /tmp/test.log # stdout in batch mode
ls | ./test.bash # stdin in batch mode
您的示例適用於** stdin **的情況,對於** stdout **,我們可以使用'if [-t 1]'。如果[-t 0] && [-t 1]' – 2012-08-21 01:49:36
。這似乎是一個好主意。有時少就是更多,有時少就是少。所以......這是一個我不知道的shell腳本的新範例,還是您的個人意見?祝你們好運。 – 2012-08-21 01:55:51
感謝您的分享,最好的答案是 – shellter 2012-08-21 02:52:31