我有以下内容:
测试文件
. Foo.sh
Foo.bar
Foo.baz
Foo.blah
和
福
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
但这并没有我想要的那么优雅。无论如何,它仍然无法让我的 error() 函数访问错误文本。
答案1
为什么不直接用它test
来检查命令是否存在以及是否可执行呢?像这样:
if [[ -x /my/executable/file ]]; then
echo "Oh, there we go!";
else
echo "Oh damn! =(";
fi;
再见!