Предотвращение подстановки после замены переменной

Каков наиболее элегантный способ использования переменной оболочки (BASH ), которая содержит символы, зарезервированные для подстановки (завершения имени файла ), которые вызывают некоторые нежелательные замены? Вот пример:

for file in $(cat files); do
   command1 < "$file"
   echo "$file"
done

Имена файлов содержат такие символы, как '[' или ']'. У меня в основном две идеи:

1 )Отключить подстановку с помощью set -f :Мне нужно это где-то еще

2 )Экранировать имена файлов в файлах :BASH жалуется на «файл не найдено» при передаче на стандартный ввод

Спасибо за любое предложение

Изменить :Единственный недостающий ответ — как читать из файла с именем, содержащим специальные символы, используемые для подстановки, когда имя файла находится в переменной оболочки «$ файл», т. г. команда1 < "$ файл".

5
задан fungs 7 May 2012 в 13:57
поделиться