Если следующий пример, который устанавливает переменную среды IFS
в символ перевода строки...
IFS=$'\n'
- Что означает знак доллара точно?
- Что он делает в данном конкретном случае?
- Где я могу узнать больше об этом конкретном использовании (Google не разрешает использовать специальные символы в поиске, и я не знаю, что искать в противном случае)?
Я знаю, что такое переменная среды IFS
и что такое символ \n
(перевод строки), но почему бы просто не использовать следующую форму: IFS="\n"
(которая не работает)?
Например, если я хочу перебрать каждую строку файла и использовать цикл for, я мог бы сделать это:
for line in (< /path/to/file); do
echo "Line: $line"
done
Однако это не будет работать правильно, если IFS
не установлен на символ перевода строки. Чтобы заставить его работать, я должен был бы сделать это:
OLDIFS=$IFS
IFS=$'\n'
for line in (< /path/to/file); do
echo "Line: $line"
done
IFS=$OLDIFS
Примечание: мне не нужен другой способ сделать то же самое, я уже знаю много других... Мне просто интересно узнать об этом $'\n'
, и мне интересно, может ли кто-нибудь дать мне объяснение по этому поводу.