Раскол оболочки в подоболочке

У меня есть неясная информация о разбиении слов в Shell и подоболочках.

Пример:

IFS=""
file_name="file with space"
file_name=$(real_path $file_name)

Будет $file_name расколоться на подоболочку? Или я должен сделать двойную кавычку так:

file_name=$(real_path "$file_name")

После некоторого тестирования я узнал, что:

  • если я поставлю IFS=" ", затем $file_name разделяется на пробелы
  • если IFS="" тогда весь $file_name передается в качестве первого параметра.

ksh, dash и bash пока показывают это поведение.

1 ответ

Это не будет разделять слова, так как вы устанавливаете IFS в пустую строку перед разветвлением подоболочки, но вам все равно придется заключить его в кавычки, чтобы предотвратить расширение пути.

Другие вопросы по тегам