Qual é a maneira mais fácil de permitir que o usuário insira números nos seguintes formatos para que cada número individual possa ser impresso.
separados por vírgula ( 1,5,7 ), separados por espaço ( 1 5 7 ) e separados por intervalo ( 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
Eu tentei seguir maneiras, definindo apenas a lógica
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..
Quer saber como lidar com - e , ambos juntos em array , obrigado
Divida as vírgulas/espaços primeiro, faça um loop sobre os resultados e, em seguida, divida em traços para obter um início e um fim para o intervalo:
Isso poderia fazer com uma melhor verificação de sanidade etc.
Tente também
Veio com uma variante Awk
Lendo a entrada delimitada como um registro, dividindo-o em uma matriz usando "-" Os registros sem "-" são armazenados no primeiro índice. Finalmente, imprime os valores.
Entrada:
Resultado: