目前我在BASH中創建一個小腳本,它會要求用戶填寫一個新的IP地址,子網和網關。該輸入到一個文件,將被寫入/ etc/network/interface ..清空變量
我得到了腳本的工作,但它不是防彈。
當用戶輸入時,不是一個數字而是一個字母字符,它返回並且用戶需要再次填充一個數字。 當用戶仍然使用字母字符時,即使出現錯誤,腳本也會繼續。
我的代碼:
echo "Fill in your IP"
read NEW_IP
oldIFS=$IFS
IFS=.
set -- $NEW_IP
while [ $# -ne "4" ]; do
echo "Must have 4 parts"
read NEW_IP
set -- $NEW_IP
done
for oct in $1 $2 $3 $4; do
echo $oct | egrep "^[0-9]+$" >/dev/null 2>&1
while [ "$?" -ne "0" ]; do
echo "$oct is not numeric. fill your IP in the correct format;"
read NEW_IP
set -- $NEW_IP
done
我是新使用bash,上面我沒有通過我自己做到這一點。我在網上找到了這個腳本。在一段時間,我做了一個循環。 每次用戶填寫錯誤的號碼它必須返回,直到用戶填寫正確的格式。
真正的問題在於代碼的後半部分。當我填寫一個像10.10.10.a這樣的錯誤IP時,我得到了我想要的錯誤,並且必須第二次填寫我的IP。 當我輸入10.41.12.r時,發生了一個錯誤,但是這次沒有抱怨最後的r,但仍然抱怨我在第一個插入的a。 10.41.12將被檢查,但最後一個字符不同。
我可以想象,一切都將存儲在內存中,但我該如何清除? 未設置或$ oct =
將不起作用
希望有人可以幫助我這個。這是我第一次編程,這讓我很頭疼
謝謝。
戴夫
即代碼段是不是整個劇本就這麼難不工作的位置評 - 但事情你是在IP再次閱讀和設置它 – Vahid
做數字測試你的第一個,而裏面的長相循環。 – cdarke