Por que você não usa apenas test
para verificar se o comando existe e é executável? Assim:
if [[ -x /my/executable/file ]]; then
echo "Oh, there we go!";
else
echo "Oh damn! =(";
fi;
Cya!
Eu tenho o seguinte:
test.sh
. Foo.sh
Foo.bar
Foo.baz
Foo.blah
e
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
Isso é o que recebo quando executo test.sh
:
$ ./tesh.sh
I am a bar!
But, I am a baz!
./test.sh: line 5: Foo.blah: command not found
Eu gostaria de:
command not found
. Foo.blah: command not found
para Foo.error()
para realizar alguma ação com base no erro. Suponho que eu possa redirecionar erros para / dev / null da seguinte forma:
./test.sh 2> /dev/null
Mas isso não é tão elegante quanto eu gostaria que fosse. De qualquer forma, ainda não dá acesso à minha função error () ao texto do erro.
Por que você não usa apenas test
para verificar se o comando existe e é executável? Assim:
if [[ -x /my/executable/file ]]; then
echo "Oh, there we go!";
else
echo "Oh damn! =(";
fi;
Cya!
Tags bash shell shell-scripting