Если следующий пример, который устанавливает 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'
и интересно, может ли кто-нибудь дать мне объяснение по этому поводу .
\n
это просто (экранированная) буква n. Вы правы, что'\n'
и"\n"
есть люфт с последующим n.