允许用户以下列格式输入数字以便打印每个单独的数字的最简单方法是什么。
逗号分隔 (1,5,7),空格分隔 (1 5 7) 和范围分隔 (1-3,5)
Expected output if input is comma separated:
1
5
7
Expected output if input is space separated:
1
5
7
Expected output if input is - and , separated:
1
2
3
5
我尝试了以下方法,仅定义逻辑
input_string="1,5,7"
IFS=' ' read -r -a array <<< "$input_string"
echo ${array[1]} etc..
input_string="1 5 7"
read -r -a array <<< "$input_string"
echo ${array[1]} etc..
想知道如何处理 - 和,两者一起排列,谢谢
首先拆分逗号/空格,遍历结果,然后拆分破折号以获得范围的开始和结束:
这可以通过更好的健全性检查等来实现。
也试试
想出了一个 awk 变体
读取分隔输入作为记录,使用“-”将其拆分为数组 没有“-”的记录存储在第一个索引最后打印值。
输入:
输出: