Раскол оболочки в подоболочке
У меня есть неясная информация о разбиении слов в 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 в пустую строку перед разветвлением подоболочки, но вам все равно придется заключить его в кавычки, чтобы предотвратить расширение пути.