탭으로 구분된 필드를 변수에 넣는 간단한 방법

탭으로 구분된 필드를 변수에 넣는 간단한 방법

Bash에서는 행의 필드를 배열로 읽었습니다. 강조하자면 성능이 문제이므로 하위 프로세스를 생성하는 것은 감당할 수 없습니다.

코드를 더 읽기 쉽게 만들기 위해 필드를 변수에 넣고 싶습니다 . 다음 $width${array[0]}같이 각 변수를 수동으로 설정해야 하는데, 이는 중복이 많습니다.

while read line; do

  array=($line)
  width=${array[0]}
  height=${array[1]}
  size=${array[2]}
  date=${array[3]}
  time=${array[4]}

  # use $width, $height, etc. in script

done < file

listPHP의 지시어처럼 이를 수행하는 간단한 방법이 있나요?

list($width, $height, $size, $date, $time) = $array;

답변1

예:

while read -r width height size thedate thetime; do
    # use variables here
done <file

이는 표준 입력에서 데이터를 읽고 공백(공백 또는 탭)으로 데이터를 분할합니다. 마지막 변수는 "남은" 데이터를 모두 가져옵니다(읽은 변수보다 필드가 더 많은 경우). 이것은바꾸다변수를 읽습니다 line.

유틸리티 이름 대신 변수 이름 thedate과 를 사용했습니다 .thetimedatetime

구분선탭만, IFS다음으로 설정된 탭 read:

IFS=$'\t' read -r width ...etc...

또한보십시오:

관련 정보