回声和反斜杠(bash)

时间:2013-05-19 17:27:13

标签: bash echo backslash

我正在尝试在〜/ .bashrc文件中创建一个函数,该函数使用echo命令通过管道传递其参数。它有效,但当我尝试输入一个'\'字符时,它就会消失。如果我输入\\(两个'\')它就会成功。即使使用-E选项也可以使用...

那么,我怎样才能使下面的代码打印“foo \ bar”而不是“foobar”?

func()
{
    echo -E "${@}"
}

2 个答案:

答案 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
foob​​ar的