根据用户输入查找数组的数量

根据用户输入查找数组的数量
echo -n "Which station or stations you want to download?"
read station
ELEMENTS=${#station[@]}
for (( i=0;i<$ELEMENTS;i++)); do
    echo you chose ${station[${i}]} stations to download data
done 

station 必须是 4 个字符,如果用户写入多个 station,我需要检查数组的 station 输入数量。例如,如果用户写入 brmu ankr ista。我如何定义 station 变量的输入数量并控制其字符数?

答案1

您可以使用for循环遍历每个项目并使用wc -m命令检查字符数。

这是您编辑过的脚本。如果我对循环使用了不同的语法,我深表歉意,但这就是我习惯的做法。

serg@ubuntu[/home/xieerqi] 
$ cat stations.sh                                                                                                                      
#!/bin/bash
echo -n "Which station or stations you want to download?"
read station

for item in $station; do
   NUM=$(printf $item | wc -m)
     if [ $NUM -gt 4 ]; then
    echo "Error: number of chars in $item greater than 4"
    exit 1
     fi
done

ELEMENTS=${#station[@]}
for (( i=0;i<$ELEMENTS;i++)); do
    echo you chose ${station[${i}]} stations to download data
done 


serg@ubuntu[/home/xieerqi] 
$ ./stations.sh                                                                                                                        

例如,如果您的电台名称为和asdf,则您选择下载数据的参数:yoloswagasdf yolo swag

serg@ubuntu[/home/xieerqi] 
$ ./stations.sh                                                                                                                        
Which station or stations you want to download? asdf qwerty swag
Error: number of chars in qwerty greater than 4

注意我使用 printf,而不是 echo。echo 输出额外的尾行,因此会弄乱字符计数。如果您更喜欢使用 echo,则使用echo -n以避免打印换行符

相关内容