2015-05-09 74 views
0

我想寫一個bash腳本來打印每行的位置+字符。只允許字符A,a,B或b。如果我找到「A」或「a」,腳本結束。如果我找到「B」或「b」,腳本繼續。字符串的長度必須是不相關的。在Bash中打印位置和字符

例子:

打字 「BbBba」,腳本會通知給用戶的所有位置,一個接一個,並退出時,會出現 「一」,是這樣的:

B - position 0 
b - position 1 
B - position 2 
b - position 3 
a - position 4 # done 

如何我可以這樣做嗎?

回答

0

試試這個:

#!/bin/bash 

input= 
while true; do 
    read -p "Enter only A or B: " input 
    if [[ $input =~ ^[abAB]+$ ]]; then 
     break 
    else 
     echo "Invalid input. Please try again." 
    fi 
done 

array=`echo $input| fold -w1` 
counter=0 

for i in ${array[@]}; do 
    echo "$i - position $counter" 
    counter=$[ $counter + 1 ] 
    if [ $i == 'a' -o $i == 'A' ]; then 
     break 
    fi 
done 

此代碼首先會檢查用戶輸入只包含在第一whileA, B, ab。代碼的下一部分將把字符串轉換爲字符數組。最後它會打印出價值及其位置。如果角色包含Aa,腳本將結束。

希望這會有所幫助。

+0

大戴爾!而已!謝謝! –

+0

爲什麼你要調用你的變量'array'?它根本不是一個數組。爲什麼使用擴展'$ {array [@]}',因爲它不是數組? –