[Linux] IFS(Internal Field Separate) 정리

IFS

외부 프로그램을 실행할 때 입력되는 문자열을 나눌 때 기준이 되는 문자를 정의하는 환경 변수

터미널에서 환경변수를 출력해보면 공백문자가 출력됨을 알 수 있다

$ echo ${IFS}

IFS의 디폴트 값은 공백,탭,개행 문자이다 (” “, \t, \n)

쉘 스크립트에서 for in 문법을 보면 공백문자로 띄워진 하나의 문자열이 마치 배열처럼 하나씩 순회하는 것을 확인해 볼 수 있다

#!/bin/bash

STRING="hello bye"

for word in ${STRING}
do
  echo "word -> ${word}"
done
$ bash script.sh
word -> hello
word -> bye

IFS값이 공백이기 때문에 위 처럼 공백으로 분리된 STRING 변수의 값이 쪼개지는 것을 확인할 수 있다. 그럼 IFS의 기본 값을 바꾸면 어떻게 될까?

#!/bin/bash

IFS_BAK=${IFS} # 기존 IFS 설정 값을 IFS_BAK 이라는 변수에 백업해놓자
STRING="hello bye"

for word in ${STRING}
do
  echo "word -> ${word}"
done
$ bash script.sh
word -> hello bye

단어를 쪼개는 기준이 되는 문자가 공백에서 “:“로 바뀌었기 때문에, 위 결과처럼 하나의 문자열로 출력되었다

IFS 기본 값이 “:“인 상황에서 단어를 쪼갤 수 있는 방법은 아래와 같이 수정하는 수 밖에 없다

STRING="hello:bye"

그러면 첫번째 예시의 결과와 같이 단어가 쪼개져서 출력이 될거다

관련 글

지식 공유3분 읽기

[Linux] Ubuntu 24.04 -> Rocky 10 마이그레이션

개요 기존 홈서버에서 운영 중인 Ubuntu 24.04 서버의 모든 서비스( Docker , Gatsby , 데이터 등등)를 새로운 Rocky 서버로 누락 없이 이관하기 위한 과정을 기록해보려고 합니다. 사전 준비 작업 전에, 양쪽...

리눅스
지식 공유3분 읽기

[Linux] 테스트 서버 디스크 장애 이슈

개요 OS : Rocky 8.10 디스크 구성 /dev/sda : 메인 디스크 /dev/sdb : 백업 디스크 상황 평소에 서버 로그에 READ sda .... , swap 관련 메시지가 간간히 보였음. 어느 날 I/O 관련 로그가...

리눅스
지식 공유1분 읽기

[Linux] SSH Keygen으로 원격 접속 키 생성하기

SSH Key 인증? SSH Key 인증은 비대칭 암호화라는 방식을 사용합니다. 한 쌍의 키(Key Pair)를 생성하여 하나는 내가 가지고 있고(개인 키, Private Key), 하나는 서버에 등록(공개 키, Public Key)...

리눅스