【发布时间】:2020-03-30 14:12:12
【问题描述】:
我想写一个shell脚本来得到以下输出:
$ Enter String: a2b3
aabbb
我在for 循环中使用了数组,但它总是无法将字符串中的两位数值作为单个元素附加到数组中。它总是作为两个单独的元素存储在数组中。
使用的脚本:
echo "Enter your alphanumeric string: "
read a
n=${#a}
for (( i=0;i<n;i++ ))
do
string[i]=${a:i:1}
if [[ ${string[i]} =~ [a-zA-Z] ]]
then
alpha+=("${string[i]}")
elif [[ ${string[i]} =~ [0-9] ]]
then
if [[ ${string[i+1]} =~ [0-9] ]]
then
num+=${string[i]}${string[i+1]}
elif ! [[ ${string[i+1]} =~ [0-9] ]]
then
num+=("${string[i]}")
fi
fi
done
n=${#num[*]}
for (( i=0;i<n;i++ ))
do
echo num[$i] = ${num[i]}
done
n=${#alpha[*]}
for (( i=0;i<n;i++ ))
do
echo alpha[$i] = ${alpha[i]}
done
n=${#alpha[*]}
for (( i=0;i<n;i++ ))
do
y=${num[i]}
for (( j=0;j<y;j++ ))
do
echo -ne ${alpha[i]}
done
done
echo " "
我得到相同的输出:
$ sh Q1.sh
Enter your alphanumeric string:
a12b20
num[0] = 1
num[1] = 2
num[2] = 2
num[3] = 0
alpha[0] = a
alpha[1] = b
abb
我需要将值12 存储为单个元素num[0],而不是作为两个单独的元素num[0]=1、num[1]=2。与值20 相同。
请帮帮我....提前谢谢您。
【问题讨论】:
-
这需要更多细节。比如,每个字母后面是否有一个数字,或者像
abc3这样的输入是否可能?如果是,那么预期的输出是什么?abcabcabc或abccc?