쉘 변수를 사용하는 방법을 이해하려고 합니다 IFS
. 다음 코드가 있습니다.
#!/bin/bash
ourpath=$PATH
oldIFS=$IFS
IFS=":"
echo "ourpath = $ourpath"
for directory in "$ourpath"; do
echo "directory = $directory"
done
IFS=$oldIFS
수익금으로 실행하세요 bash test.sh
.
ourpath = ~/bin:/home/<user>/anaconda3/bin:/home/<user>/.local/bin:/home/<user>/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:~/scripts
directory = ~/bin:/home/<user>/anaconda3/bin:/home/<user>/.local/bin:/home/<user>/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:~/scripts
directory
하지만 디렉토리를 순회 하고 싶습니다 . 여기서 무엇이 문제입니까 $PATH
?:
답변1
이는 공백과 정확히 동일합니다. 인용하면 $ourpath
분할되지 않습니다. 따옴표를 제거하면 원하는 결과를 얻을 수 있습니다.
즉:
for directory in $ourpath ; do
echo "directory = $directory"
done
$ourpath
보너스 포인트: 공백이 포함되어 있는지 여부는 중요하지 않습니다. 왜냐하면 IFS
공백이 포함되어 있으므로 :
분할되기 때문입니다.: