我的bash腳本應該接受用戶的輸入,處理與特定文件退出,如:使得bash腳本退出如果在標準輸入
if [ -e "formatted_log.csv" ]
then
printf "\nPresence of formatted_log.csv file detected: It appears this script has already been run is this dir.\n"
printf "Appending can cause errors.\n"
read -e -p "Would you like to continue?[y/n]" stdin
這種邏輯檢查用戶輸入:
if [ $stdin = "n" ] || [ $stdin = "N" ];
then
printf "\nOkay, exiting.\n"
exit;
fi
if [ $stdin != "y" ]&&[ $stdin != "Y" ]&&[ $stdin != "n" ]&&[ $stdin != "N" ];
then
printf "\nPlease use a valid input (y/n)...exiting.\n"
exit;
fi
fi
問題是,如果你只是按下輸入腳本執行,就好像一個「Y」或「Y」已被輸入,我不知道爲什麼。我的理解是,這是書面的方式,它應該如果用戶將在比唉,Y以外的任何時候你有沒有輸入退出,n或N.
它打印此:
master_script.sh: line 14: [: =: unary operator expected
master_script.sh: line 14: [: =: unary operator expected
master_script.sh: line 19: [: !=: unary operator expected
但不退出–我該如何退出?
切換到[[]]'形式的[條件表達式](http://wiki.bash-hackers.org/syntax/ccmd/conditional_expression)可能會讓你快速瀏覽。還要確保每個'''''''&&''||'等都有空格。 [shellcheck](http://shellcheck.net)可以幫助你。 – cxw
如果你只是要退出,就告訴用戶他們輸入了一個無效的輸入信息是沒有意義的(就好像他們輸入'n'或'N')。 – chepner
'test -f'不*檢查存在 - 它比這更挑剔。你需要寫'-e'或者改變你的描述。 –