2017-10-24 9 views
2

결과는 bash: ls -al /: No such file or directory과 같습니다.

셸이 예상 된 결과를 반환 할 수 없습니다.

IFS를 $' \n' (공백 추가)으로 변경하면 문제가되지 않습니다.

IFS에 대한 지식이 많지 않으므로 설명해 줄 수 있습니까? 첫 번째 경우에

+0

이 http://mywiki.wooledge.org/WordSplitting –

답변

3

:

show="ls -al /" 
IFS=$'\n' 
$show 

IFS 단어를 유도하지 마십시오 변수에 거기에 공간과 공간을 가지고 있지 않기 때문에 전체 문자열 ls -al /는, 쉘이 명령 이름으로 취급되고있다 파편. 단어 분할을 완전히 억제하는 "$ show"명령을 작성하는 것만큼이나 좋습니다.

두 번째 경우에는 공백이 IFS의 일부이므로 단어 분리가 발생합니다.


은 참조 :

+0

내가 파일을 각 라인을 읽을 IFS 변경 'a : 1 \ n b : 2' 나는 bash로 그것을 읽는 좋은 방법을 모른다. 좋은 생각이 있니? – daixiang0