1

Я должен прочитать содержимое файла в переменной. Делать следующее замечательно:

content1=$(<content-1.html)

Однако, если этот файл содержит звездочку (*), вместо правильного чтения он заменяет его списком файлов в рабочем каталоге.

Итак, если файл содержит следующее:

var randomFirst = (Math.floor( Math.random() * (items.length) ) );

Чтение превращает это в следующее:

 var randomFirst = (Math.floor( Math.random() backups compile.sh content css favicon.ico img libs output template.html template_compiled.html (items.length) ) );

Как мне прочитать файл, чтобы убедиться, что специальные символы не интерпретируются?

Спасибо,

1 ответ1

3

Простой ответ - использовать двойные кавычки:

content1="$(<content-1.html)"
echo "$content1"

Двойные кавычки позволяют расширять переменные, но не маски файлов. Кавычки не появляются в расширении. Поэтому всегда используйте двойные кавычки при ссылке на content1.

Фактически, первое утверждение не нуждается строго в двойных кавычках, так как bash не повторно сканирует строку ввода, но они не причиняют вреда.

Таким образом, ваша проблема не в чтении файла, а в том, как вы используете его содержимое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .