Bash 매뉴얼 페이지와 기타 문서를 읽었지만 설명이 약간 혼란스럽습니다.
다음과 같은 간단한 스크립트가 있습니다.
#!/bin/bash
IFS=""
echo $2
var=A B C
echo $var
다음과 같이 실행하면:
LANG=C ./args2 3 4
4
./args2: line 7: B: command not found
정말 이해가 안 돼요. 왜 2달러 = 4인가요? 설명서에 다음과 같이 나와 있는 경우:
IFS 값이 비어 있으면 단어 분할이 발생하지 않습니다.
var 선언과 동일합니다. 왜 "B"에 대해 불평합니까? 그렇다면 분사는 존재하는 걸까요?
답변1
답변2
IFS에는 스크립트가 실행되기 전의 기본값이 있습니다. 매개변수 분할은 스크립트를 실행하는 bash 인스턴스에서 수행됩니다. 이는 IFS를 설정하지 않았기 때문에 정상적으로 분할됩니다.