我正在尝试在〜/ .bashrc文件中创建一个函数,该函数使用echo命令通过管道传递其参数。它有效,但当我尝试输入一个'\'字符时,它就会消失。如果我输入\\(两个'\')它就会成功。即使使用-E选项也可以使用...
那么,我怎样才能使下面的代码打印“foo \ bar”而不是“foobar”?
func()
{
echo -E "${@}"
}
答案 0 :(得分:2)
解释反斜杠的不是echo
,而是shell。它甚至在你的函数被调用之前就被解释了。正确的解决方案是将参数引用到函数中。
func()
{
echo -E "${@}"
}
func 'foo\bar'
答案 1 :(得分:0)
您需要确保实际为该函数提供反斜杠;函数本身工作正常,如:
jlaiho @ LT2:〜$ fun(){echo -E“$ @”; }
jlaiho @ LT2:〜$ fun'foo \ bar'
FOO \杆
但是,如果反斜杠甚至没有达到该功能,则不会打印:
jlaiho @ LT2:〜$ fun foo \ bar
foobar的