Bash:如何将“未找到命令”文本传递到我的陷阱函数中?

Bash:如何将“未找到命令”文本传递到我的陷阱函数中?

我有以下内容:

测试文件

. 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

我想:

  1. 抑制command not found错误。
  2. 将文本传递Foo.blah: command not foundFoo.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;

再见!

相关内容