![带有管道字符的终端上的自定义命令](https://linux22.com/image/1016483/%E5%B8%A6%E6%9C%89%E7%AE%A1%E9%81%93%E5%AD%97%E7%AC%A6%E7%9A%84%E7%BB%88%E7%AB%AF%E4%B8%8A%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4.png)
我需要在 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!