在Bash中打印位置和字符

时间:2015-05-09 04:00:32

标签: bash

我想编写一个bash脚本,每行打印位置+字符。只允许使用字符A,a,B或b。如果我找到“A”或“a”,则脚本结束。如果我找到“B”或“b”,脚本将继续。字符串的长度必须无关紧要。

示例:

输入“ BbBba”,脚本将逐个通知用户所有位置,并在出现“a”时退出,如下所示:

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

我该怎么做?

1 个答案:

答案 0 :(得分: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

此代码首先检查用户输入是否仅在第一个A, B, a循环中包含bwhile。然后代码的下一部分将字符串转换为字符数组。最后,它将打印出值及其位置。如果角色包含Aa,则脚本将结束。

希望这有帮助。