2017-04-06 82 views
1

我試圖錯誤陷阱用戶輸入。錯誤陷阱用戶輸入 - Bash腳本循環

- 我需要用戶輸入文件名。

- 有些用戶正在輸入完整的URL,並殺死了腳本的其餘部分。

  • 因此,如果用戶輸入http://我希望腳本給出一個錯誤消息,並讓他們只輸入文件名。

- 每次用戶輸入網址時都需要重複。

  • 如果他們輸入文件名,則執行腳本的其餘部分。

這是我到目前爲止。如果用戶輸入的網址,一旦它的工作原理,但如果他錯了輸入兩次它將執行腳本

#!/bin/bash 
read -p "Enter File : " string 

if [[ $string -ne *」http://「* ]]; 
then 
s3cmd get s3://backup/domain.com/$string 



elif [[ $string -ne *"http://"* ]]; 
echo 「You entered the full URL, enter on the file name「 
read -p "Enter File : " string 

then 

s3cmd get s3://backup/domain.com/$string 

else 
    echo "rest of script" 
fi 

回答

0

的其餘部分如果能夠檢測到用戶輸入一個完整的網址,那麼爲什麼不乾脆剝離前綴,避免打擾用戶?

http_prefix="http://" 
if 
    [[ $string =~ ^$http_prefix(.*) ]] 
then 
    string=${BASH_REMATCH[1]} 
fi 

=~運營工作中使用bash雙鬥提試驗。它匹配一個擴展的正則表達式,匹配的子表達式(圓括號內的內容)放在BASH_REMATCH數組中,第一個子表達式位於索引1處。如果匹配失敗,則測試返回一個非零值,在這種情況下,字符串保持原樣。

請注意,這並不能確保網址有效,只是它不以「http://」開頭,所以我想說這更像是一個玩具示例,而不是生產就緒代碼。