我想编写一个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
我该怎么做?
答案 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
循环中包含b
或while
。然后代码的下一部分将字符串转换为字符数组。最后,它将打印出值及其位置。如果角色包含A
或a
,则脚本将结束。
希望这有帮助。