변수 할당 및 IFS

변수 할당 및 IFS

Greg의 위키에 따르면IFS변수 사용:

  • read명령 에서 여러 변수 이름 인수가 지정된 경우 IFS각 변수가 단일 입력 필드를 갖도록 입력 행을 분할하는 데 사용됩니다.
  • 따옴표가 없는 확장에 대해 WordSplitting을 수행할 때 IFS확장 값을 여러 단어로 분할하는 데 사용됩니다.
  • 수행 "$*"하거나 "${array[*]}"확장할 때 첫 번째 문자는 IFS요소 사이에 배치되어 최종 출력 문자열을 구성합니다.
  • 실행되면 의 "${!prefix*}"첫 번째 문자가 IFS변수 이름 사이에 배치되어 출력 문자열을 형성합니다.
  • IFScomplete -W아래에서 사용하도록 프로그래밍 가능하여 완성됨

IFS그래서 내 질문은, 왜 변수 할당에서 역할을 해야 합니까 ? 다음 내용에 따르면 bash는 a:b:c:d오른쪽 문자열에 토큰화( )를 적용합니다.

$ IFS=: s=a:b:c:d
$ echo $s
a b c d

답변1

그러나 실제로는 그렇지 않습니다. 당신은해야합니다올바른 인용. IFS 값을 기준으로 따옴표가 없는 확장에 토큰화를 적용합니다. 문제는 echo작업이 아니라 명령입니다.

 $ ( IFS=: s=a:b:c:d typeset -p s )
declare -- s="a:b:c:d"

관련 정보