【发布时间】:2019-12-04 01:48:26
【问题描述】:
$ cat foo.txt
a=1one
b=2two
c=3 three
d=4four
$ source foo.txt
bash: three: command not found...
需要设置foo.txt中列出的所有变量,如何通过转义空格字符来获取这个文件? foo.txt 来自其他应用程序,我无法控制,或者有替代source 的方法吗?
【问题讨论】:
-
@anubhava,......如果你相信它。如果你不这样做,最好显式解析。
-
@anubhava,您建议使用 sed 的命令行选项吗?还是我应该创建一个 sed 文件并获取该新文件?
-
@rodee,
sed -i就地修改文件(理论上,它会创建一个新的临时文件并将其重命名为原始文件)。如果您有一个不支持它的基线 POSIXsed,那么是的,您可以不使用该选项,将输出重定向到一个文件,然后获取该文件(或者,如果您有一个足够新的 bash,这不是t buggy,source <(sed ...)——虽然它和source有同样的安全问题,所以我不推荐它)。 -
@anubhava,在您的第一条评论
s/ *$/"/中,'*' 之前的空格有什么意义,如果我删除这个空格,采购将失败,但我不明白为什么。 -
*在正则表达式中是一个修饰符,意思是“零个或多个先前的东西”,在这种情况下,表示零个或多个空格。如果没有先验,则为无效语法。