2011-01-21 4 views
1

私はスクリプトに追加しようとしています入力に9または10文字しか入力できない入力に制限を書いていますが、これを設定しますが、私はそれが欲しい方法で動作しません。 1つの数字を入力しても、入力したものはすべて10文字に戻ります。私のコードで何が間違っていますか?読み取りは2つの長さしか受け入れることを許可しない

#!/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

あなたのスクリプトが入力を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 

readから-nオプションは、指定した文字数への入力を制限するが入る押さずにその長さを受け入れます。 Enterキーを押して入力する数を減らすことができます。私はそれが-n 1のために有用であることが判明しましたが、ほとんどそうではありません。

+1

+1しかし、 'y'の後のスペースだけを忘れないでください。 – SiegeX

+0

Heh、この質問は47分前に尋ねられましたが、私と同じRSSフィードを使用している必要があります。 – SiegeX

+0

ちょうど私がそれに感謝する必要があったように働いた – user577732

1

彼らはそうのような10文字の最大に入るものは何でも切り捨てるオフセットパラメータ展開を使用します。

$ num="123456789012"; echo ${num::10} 
1234567890 
関連する問題