我寫了一個腳本,在那里我呼叫其他腳本(不帶引數),然后檢查腳本的回傳值(它應該是 1)。
yourfilenames=$(ls ./)
for FILE in $yourfilenames
do
Points=0
./$FILE
if [ $? -ne 0 ];
then
Points=$(($Points 1))
fi
done
問題是這樣的腳本:
Usage()
{
clear
printf "${red}ERROR (An Error has occured.)${reset}\n\n"
sleep 1.5
read -n 1 -s -r -p "Please press a key to continue..."
clear
}
if [ $# -gt 2 ] || [ $# -lt 1 ]
then
Usage
exit 1
fi
并且:
echo "What do u want to know?(Quit with "q")"
while (true)
do
read input_string
case $input_string in
.
.
.
q) break
;;
Q) break
;;
*) echo "This function is not possible"
;;
esac
done
echo
echo "Bye"
exit 0
我的腳本應該自動檢查大約 50 個腳本的回傳值,但是我的腳本正在停止,因為我需要按一個鍵才能繼續它(在上面的示例中)。
我的腳本如何“忽略”這些輸入請求?我的腳本也可以忽略“sleep 1.5”嗎?
我試過了,>/dev/null但這不起作用,我只是在控制臺上看不到輸出。我還需要按一個鍵。
uj5u.com熱心網友回復:
將yes命令通過管道傳輸到命令。它為y任何問題提供持續的答案。
另外,不要決議ls. 如果任何檔案名中有空格,它將失敗。
并且Points需要在回圈之前進行初始化。您將其設定回0每個腳本之前。
Points=0
for eachfile in *
do
if ! yes | ./"$eachfile" >/dev/null
then
((Points ))
fi
done
不用說,只有在您知道腳本根據對提示的回應不會做任何危險的事情時才應該這樣做。
您可以sleep通過創建一個帶有sleep指向的符號鏈接的目錄來覆寫這些命令/bin/true,并將該目錄放在$PATH.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397118.html
標籤:猛击
