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
,则您选择下载数据的参数:yolo
swag
asdf 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
以避免打印换行符