Оболочка-запись содержимого переменной в файл
Я хотел бы скопировать содержимое переменной (здесь называется var
) в файл.
имя файла хранится в другой переменной destfile
.
у меня возникли проблемы, делая это. Вот что я пробовал:
cp $var $destfile
Я также пробовал то же самое с командой dd... Очевидно, снаряд думал, что $var
имел в виду каталог и поэтому сказал мне, что каталог не может быть найден.
как мне обойти это?
5 ответов:
использовать :
var="text to append"; destdir=/some/directory/path/filename if [ -f "$destdir" ] then echo "$var" > "$destdir" fi
The
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"