如何在shell脚本中测试未知命令?

如何在shell脚本中测试未知命令?

我想知道,是否有一种方法可以通过 shell 脚本并为每个命令获取警告,这是未知的。

我知道bash -n语法检查,但它没有告诉我,是否有命令不可用。

当然,运行代码不是一种选择。

答案1

一般来说这是不可能的,因为脚本可以包含类似的内容

read $command
"$command" -rf /

在现实生活中,命令将被清理或从列表中选取,但仍然不可能提前知道哪些命令是可能的。

答案2

尝试明确地执行此操作:

test_apps="command1 command2 command3"
for cmd in $test_apps; do
    type &>/dev/null $cmd && echo "$cmd installed" ||
        echo >&2 "$cmd not installed"
done

或者,如果您将命令放在完整的路径中:

grep -oP '^\s*/.*/\K.*' script.sh |
    xargs -I% which % 2>&1 |
    grep -oP '^\w+:\s+\Kno\s+\S+'

答案3

我倾向于做这样的事情:

if ! which dos2unix > /dev/null; then

   echo "Error: dos2unix not installed!"
   exit 1
fi

相关内容