while 루프 반복 중에 입력 파일의 모든 공백을 보존하려고합니다. 다음은 내가 작업하고있는 파일입니다 (file1).`IFS = read -r` 여전히 공백을 보존하지 않는 동안?
[email protected]:~$ cat file1
01: a b c
02: d e f
각 줄의 문자 사이에 탭을 배치했습니다. 나는 그 탭들을 출력하기를 원한다. 그래서 같은 while 루프에서 IFS를 삭제 시도 :
결과는 (나는 또한 에코 -e 시도) 심지어 내가 분명히 IFS 후 어떤 이유로 탭 없애는while IFS= read -r p; do
echo $p
done < <(cat file1)
:
[email protected]:~$ sudo bash a.sh
01: a b c
02: d e f
그러나, while 루프의 외부 I 분명한 IFS, 그것은 완벽하게 작동 할 때 : 여기
IFS=''
while read -r p; do
echo $p
done < <(cat file1)
는 출력; 탭은 보존됩니다.
[email protected]:~$ sudo bash a.sh
01: a b c
02: d e f
while 루프와 동일한 행에서 IFS를 지울 때 탭이 보존되지 않는 이유는 무엇입니까? 당신은뿐만 아니라 cat
를 사용할 필요가 없습니다
while IFS= read -r p; do
echo "$p";
done < file1
주의 사항 :
왜'<<(cat file1)'vs'
재미 있습니다. 나는 프로세스 리다이렉션에 대해 파일에서 리다이렉트를하는 것보다 훨씬 늦게 알게되었다. : D – anishsane