【发布时间】:2021-06-13 05:52:12
【问题描述】:
假设我有一个文件 file.le:
$GNUPG_HOME
$XDG_CONFIG_HOME
$XDG_DATA_HOME
在我的备份脚本中,我想实际上取消引用这些变量(在 rsync 中通过 --include-from=fi.le)
即$XDG_CONFIG_HOME,应该变成/home/user/.config。
我做了一个循环来检查:
while read i; do ls "$i"; done < fi.le
或
for i in `cat fi.le`; do ls $i; done
它会返回:
ls: 无法访问'$XDG_DATA_HOME': 没有这样的文件或目录
我想它将 '$' 视为 '\$' (转义)。我该如何改变这个?
【问题讨论】:
-
每一行都只是一个变量名,还是可以和文字混合?
-
它们不被视为被转义,它们只是被视为数据而不是 shell 语法。或者,换句话说,转义
$将阻止它在通常会引入变量替换的上下文中被解释,但从文件读取的数据不是这些上下文之一。
标签: bash variables escaping rsync