Оболочка-запись содержимого переменной в файл
Я хотел бы скопировать содержимое переменной (здесь называется var) в файл.
имя файла хранится в другой переменной destfile.
у меня возникли проблемы, делая это. Вот что я пробовал:
cp $var $destfile
Я также пробовал то же самое с командой dd... Очевидно, снаряд думал, что $var имел в виду каталог и поэтому сказал мне, что каталог не может быть найден.
как мне обойти это?
5 ответов:
использовать :
var="text to append"; destdir=/some/directory/path/filename if [ -f "$destdir" ] then echo "$var" > "$destdir" fiThe
ifтесты$destdirпредставляет собой файл.The
>добавляет текст после усечения файла. Если вы хотите добавить текст в$varк существующему содержимому файла, а затем использовать>>вместо:echo "$var" >> "$destdir"The
cpкоманда используется для копирования файлов (в файлы), а не для записи текста в файл.
echoесть проблема, что еслиvarсодержится что-то вроде-e, это будет интерпретироваться как флаг. Другой вариант:printf, аprintf "$var" > "$destdir"развернет любые экранированные символы в переменной, поэтому, если переменная содержит обратные косые черты, содержимое файла не будет совпадать. Однако, потому чтоprintfтолько интерпретирует обратные косые черты как экранирование в строке формата, вы можете использовать%sспецификатор формата для хранения точного содержимого переменной в месте назначения файл:
printf "%s" "$var" > "$destdir"
Если я правильно вас понял, вы хотите скопировать
$varв файле (если это строка).echo $var > $destdir
ни один из ответов выше, если ваша переменная:
- начинается с
-e- начинается с
-n- начинается с
-E- содержит
\затемn- не должно быть дополнительной новой строки после него
и поэтому на них нельзя полагаться для произвольного содержимого строки.
в bash, вы можете использовать "здесь строки" как:
cat <<< "$var" > "$destdir"
когда вы говорите "копировать содержимое переменной", содержит ли эта переменная имя файла или она содержит имя файла?
Я предполагаю по вашему вопросу, что
$varсодержит содержание вы хотите скопировать в файл:$ echo "$var" > "$destdir"это будет Эхо значение $var в файл с именем $destdir. Обратите внимание на цитаты. Очень важно, чтобы "$var" был заключен в кавычки. Также для "$destdir", если в имени есть пробел. Добавлять это:
$ echo "$var" >> "$destdir"