У меня есть следующее:
test.sh
. Foo.sh
Foo.bar
Foo.baz
Foo.blah
и
Foo.sh
function Foo.bar() {
echo 'I am a bar!'
}
function Foo.baz() {
echo 'But, I am a baz!'
}
function Foo.error() {
# I should suppress the 'command not found' error based on the pattern '^Foo\.([^:]+):'
# If the pattern is matched, I'll need to perform some action based on the captured pattern.
}
trap Foo.error ERR
Это - то, что я получаю, когда я работаю test.sh
:
$ ./tesh.sh
I am a bar!
But, I am a baz!
./test.sh: line 5: Foo.blah: command not found
Я хотел бы:
command not found
ошибка.Foo.blah: command not found
текст к Foo.error()
выполнить некоторое действие на основе ошибки.Я предполагаю, что мог перенаправить ошибки к/dev/null как так:
./test.sh 2> /dev/null
Но это не столь изящно, как я хотел бы, чтобы это было. В любом случае это все еще не дает мою ошибку () функциональный доступ к тексту ошибки.
Почему бы вам просто не использовать тест
для проверки если команда существует и она исполняемая? Как это:
if [[ -x /my/executable/file ]]; then
echo "Oh, there we go!";
else
echo "Oh damn! =(";
fi;
Ця!