Linux新手在这里,但我有一个应该创建文件的脚本:
VI_USERNAME=domain\\user
echo "VI_USERNAME=$VI_USERNAME" >> .visdkrc
文件如下所示:
VI_USERNAME=domain user
如何才能使输出看起来像这样:
VI_USERNAME =域\用户
答案 0 :(得分:1)
使用您描述的代码bash
不会发生这种情况(protip:总是测试您自己的示例):
$ 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
(您可能正在使用sh
,自2011年起在基于Debian的发行版中调用dash
而非bash
关于echo
的一般规则是,如果您不得不提问,请改为使用printf
:
VI_USERNAME=domain\\user
printf '%s\n' "$VI_USERNAME" >> .visdkrc
echo
是一个遗留命令,可以跨平台和shell对数据进行不同的处理,尤其是在标志和反斜杠序列方面。
printf
定义明确,陷阱较少。