我需要在 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!