2011-01-21 40 views
1

我想添加到腳本我正在寫輸入的限制,用戶只能輸入9或10個字符我這樣設置,但是當我運行它時,它不按我想要的方式工作。即使我只輸入一個數字,我輸入的所有內容都會返回10個字符。我的代碼有什麼問題?允許讀只接受兩種長度

#!/bin/bash 
# 

echo "Please input numbers only" 
read inputline 
if read -n10 inputline 
then 
    echo "10 chars" 
else 
    if read -n9 inputline 
    then 
    echo "9 chars" 
else 
    echo "invalid input length" 
fi 

回答

3

你的腳本是要求輸入三次。我假設以下是更接近你想要什麼:

#!/bin/bash 
read -p "Please input numbers only " inputline 
len=${#inputline} 
if ((len == 9 || len == 10)) 
then 
    echo "$len chars" 
else 
    echo "invalid input length" 
fi 

-n選項read限制了輸入到指定的字符數,但承認,長度不按進入。您可以通過按Enter鍵輸入更少。我發現它對-n 1有用,但很少有其他用途。

+1

+1,但不要忘記`y`後面的空格。 – SiegeX 2011-01-21 21:26:36

1

使用偏移參數擴展截斷無論他們進入到10個字符一個最大像這樣:

$ num="123456789012"; echo ${num::10} 
1234567890