반면 file.txt
:
first line
second line
third line
이는 다음에 적용됩니다 bash
.
while IFS=' ' read -a args; do
echo "${args[0]}"
done < file.txt
생산
first
second
third
즉, 파일을 한 줄씩 읽을 수 있으며 각 줄에서 공백을 구분 기호로 사용하여 줄을 배열로 더 나눌 수 있습니다. 그러나 에서는 zsh
결과가 error: 입니다 read: bad option: -a
.
zsh
에서와 동일한 목표를 어떻게 달성할 수 있습니까 bash
? 여러 가지 해결책을 시도했지만 해결하지 못했습니다.공백을 구분 기호로 사용하여 문자열을 배열로 분할.
답변1
~에서man zshbuiltins
, zsh의 읽기가 -A
대신 사용됩니다.
read [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ]
[ -u n ] [ name[?prompt] ] [ name ... ]
...
-A The first name is taken as the name of an array
and all words are assigned to it.
그래서 명령은
while IFS=' ' read -A args; do
echo "${args[1]}"
done < file.txt
기본적으로 zsh 배열 번호는 로 시작 1
하고 bash 배열 번호는 으로 시작합니다 0
.
$ man zshparam
...
Array Subscripts
...
The elements are numbered beginning with 1, unless the
KSH_ARRAYS option is set in which case they are numbered from zero.