Dado file.txt
:
first line
second line
third line
Isso funciona em bash
:
while IFS=' ' read -a args; do
echo "${args[0]}"
done < file.txt
Para produzir
first
second
third
Ou seja, conseguimos ler o arquivo linha por linha e, em cada uma, dividimos a linha em um array usando o espaço como delimitador. Mas em zsh
, o resultado é um erro: read: bad option: -a
.
Como podemos alcançar no zsh
mesmo que em bash
? Eu tentei várias soluções, mas nunca consegui dividir uma string em uma matriz usando espaços como delimitador .
De
man zshbuiltins
, a leitura de zsh usa-A
em vez disso.Daí o comando é
NB por padrão, a numeração da matriz zsh começa com
1
, enquanto a do bash começa com0
.