带有管道字符的终端上的自定义命令

带有管道字符的终端上的自定义命令

我需要在 Ubuntu 上创建一些自定义命令,一切都运行正常,直到我发现我的新自定义命令需要将 | 作为输入参数。因此,当我创建函数时,它不会将管道后的部分识别为命令,并抛出命令未找到错误。即

function listhorizontal(){
echo "1st line"
echo "hello $1"
echo "3rd line"
}

#output
ubuntu:~$ listhorizontal JohnDoe
1st line
hello JohnDoe
3rd line

它正在工作,但是当我尝试使用具有 | 的命令时,例如:

function getwithpipe(){
if [[ $1 =~ "|" ]]
then
   echo "It's there!"
fi

}
#output
ubuntu:~$ getwithpipe stringcontains|fortest
fortest: command not found

那么它将不起作用。

是否有可能改变管道的映射?

答案1

您将需要转义或引用任何 shell 特殊字符,例如。

$ getwithpipe stringcontains\|fortest
It's there!

或者

$ getwithpipe "stringcontains|fortest"
It's there!

相关内容