Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回显和反斜杠(bash)_Bash_Echo_Backslash - Fatal编程技术网

回显和反斜杠(bash)

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

我试图在~/.bashrc文件中创建一个函数,该函数使用echo命令通过管道传递其参数。它可以工作,但当我尝试输入一个“\”字符时,它消失了。如果我键入\(两个'\'),则成功。此heppens甚至带有-E选项

那么,如何使下面的代码打印“foo\bar”而不是“foobar”


解释反斜杠的不是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'