回显和反斜杠(bash)
我试图在~/.bashrc文件中创建一个函数,该函数使用echo命令通过管道传递其参数。它可以工作,但当我尝试输入一个“\”字符时,它消失了。如果我键入\(两个'\'),则成功。此heppens甚至带有-E选项 那么,如何使下面的代码打印“foo\bar”而不是“foobar”回显和反斜杠(bash),bash,echo,backslash,Bash,Echo,Backslash,我试图在~/.bashrc文件中创建一个函数,该函数使用echo命令通过管道传递其参数。它可以工作,但当我尝试输入一个“\”字符时,它消失了。如果我键入\(两个'\'),则成功。此heppens甚至带有-E选项 那么,如何使下面的代码打印“foo\bar”而不是“foobar” 解释反斜杠的不是echo,而是shell。它甚至在调用函数之前就被解释了。正确的解决方案是引用函数的参数 func() { echo -E "${@}" } func 'foo\bar' 您需要确保实际向函数
解释反斜杠的不是echo,而是shell。它甚至在调用函数之前就被解释了。正确的解决方案是引用函数的参数
func()
{
echo -E "${@}"
}
func 'foo\bar'
您需要确保实际向函数提供反斜杠;该函数本身工作正常,如下所示: jlaiho@LT2:~$fun(){echo-E“$@”}
jlaiho@LT2:~$fun'foo\bar'
foo\bar 但是,如果反斜杠甚至没有到达函数,它将不会被打印:
jlaiho@LT2:~$fun foo\bar
foobar
func()
{
echo -E "${@}"
}
func 'foo\bar'