壳牌 - 写变量内容到一个文件(Shell - Write variable contents to

2019-06-26 11:22发布

我想给一个变量(这里称为的内容复制var )到文件中。

该文件的名称存储在另一个变量destfile

我有这样的问题。 以下是我已经试过:

cp $var $destfile

我也试过同样的事情用dd命令显然,外壳认为$var指的是一个目录,所以告诉我,目录可能不会被发现。

如何解决这个问题?

Answer 1:

使用echo命令:

var="text to append";
destdir=/some/directory/path/filename

if [ -f "$destdir" ]
then 
    echo "$var" > "$destdir"
fi

if测试, $destdir表示文件。

>追加截断文件之后的文本。 如果你只想在文本追加$var现有内容的文件,然后使用>>来代替:

echo "$var" >> "$destdir"

cp命令用于复制文件(文件)的,不写文本文件。



Answer 2:

echo有问题是否var包含有类似-e ,它会被解释为标志。 另一种选择是printf ,但printf "$var" > "$destdir"将扩大在变量任何转义字符,所以如果变量包含反斜杠的文件内容不匹配。 然而,由于printf唯一解释反斜杠作为逃逸格式字符串,你可以使用%s格式说明存储精确的变量内容到目标文件:

printf "%s" "$var" > "$destdir"



Answer 3:

以上,如果你的变量工作的答案都不对:

  • 开头-e
  • 开头-n
  • 开头-E
  • 包含一个\后跟n
  • 应该不会有后追加额外的换行符

所以他们不能任意字符串内容所依赖。

在bash中,你可以使用“这里的字符串”为:

cat <<< "$var" > "$destdir"


Answer 4:

如果我理解你的权利,你要复制的$var在一个文件中(如果它是一个字符串)。

echo $var > $destdir


Answer 5:

当你说“复制一个变量的内容”,这是否变量包含文件名,或者它包含文件的名称?

我假设你的疑问, $var包含要复制到该文件的内容

$ echo "$var" > "$destdir"

这将呼应$ VAR值存入一个名为$ DESTDIR。 注意引号。 非常重要的是有“$ VAR”引号括起来。 亦作“$ DESTDIR”如果有在名称中有空格。 追加它:

$ echo "$var" >> "$destdir"


文章来源: Shell - Write variable contents to a file
标签: linux bash shell