这里是 Linux 新手,但我有一个应该创建文件的脚本:
VI_USERNAME=domain\\user
echo "VI_USERNAME=$VI_USERNAME" >> .visdkrc
文件如下所示:
VI_USERNAME=domain user
如何让我的输出看起来像这样:
VI_USERNAME=域\用户
最佳答案
使用您描述的代码的 bash
不会发生这种情况(提示:始终测试您自己的示例):
$ cat myfile
VI_USERNAME=domain\\user
echo "VI_USERNAME=$VI_USERNAME" >> .visdkrc
$ bash myfile
$ cat .visdkrc
VI_USERNAME=domain\user
但是,当用户名以“t”开头时,dash
也会发生类似的情况:
$ cat myfile
VI_USERNAME=domain\\thatotherguy
echo "VI_USERNAME=$VI_USERNAME" >> .visdkrc
$ dash myfile
$ cat .visdkrc
VI_USERNAME=domain hatotherguy
(自 2011 年以来,您可能在基于 Debian 的发行版上使用 sh
,它调用 dash
而不是 bash
)
关于 echo
的一般规则是,如果您必须询问,请使用 printf
代替:
VI_USERNAME=domain\\user
printf '%s\n' "$VI_USERNAME" >> .visdkrc
echo
是一个遗留命令,它跨平台和 shell 以不同的方式处理数据,特别是在标志和反斜杠序列方面。
printf
定义良好,陷阱较少。
关于linux - Bash - 将带有反斜杠的用户名回显到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566070/