验证命令是否支持某个选项的最佳方法

验证命令是否支持某个选项的最佳方法

我想验证给定主机中的命令是否以可靠的方式支持给定选项。

我的用例是验证本地nc命令支持-w超时选项。

我的第一个想法是使用选项运行命令,然后检查返回的值:

<command> <option> ...
[ $? -ne 0 ] && echo "NOT SUPPORTED"

该方法与其他可能会产生非零值的错误原因。

例如,我在 上有一个监听 Unix 套接字 192.168.1.122:3888,而在我的本地主机上我想测试超时nc选项(我们认为不支持):

> nc 192.168.1.122 3999 < /dev/null 2>/dev/null
> echo $?
1
> nc 192.168.1.122 3888 -w 1 < /dev/null 2>/dev/null
> echo $?
1

您会看到,从返回的值来看,我无法区分错误的端口错误情况和由于不支持的参数而导致的错误调用。


还有其他可能是首选的选择吗?

答案1

由于命令行处理方面的命令行为差异很大,因此不可能创建通用的解决方案。对于每种情况,您需要找到方法来确定实际支持哪些命令行开关。如果您想防止灾难性行为(例如,某些不常见的 nc 版本在使用 -w 选项调用时会做坏事),您唯一的选择是维护已知版本及其支持的命令行开关的列表,并拒绝使用不在此列表中的命令版本:-)

相关内容