Я должен сделать некоторые пользовательские команды на 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
затем это не будет работать.
Существует ли возможность изменить отображение для канала?
Необходимо будет выйти или заключить любые специальные символы оболочки в кавычки напр.
$ getwithpipe stringcontains\|fortest
It's there!
или
$ getwithpipe "stringcontains|fortest"
It's there!