BASH如何检查给定的参数是否为命令名?

时间:2017-05-31 11:34:02

标签: bash

如何在BASH中检查脚本的给定参数是否为“命令名称”?

例如:我知道您可以检查路径是[[ -d $path ]]的文件夹,还是[[ -f $path ]]的普通文件。

我希望我的./script只接受命令名称。

3 个答案:

答案 0 :(得分:1)

使用[[ -f "$path" && -x "$path" ]],您可以检查它是否是文件并且具有执行权限,您可以在man test中看到完整的表达列表。

答案 1 :(得分:0)

通过这种方式,您可以检查参数是否可以直接从shell执行(例如:如果<command>ls,则返回Yes,如果<command>为{{ 1}}这将返回las)。

No

使用更简单的if [[ `which <command> &> /dev/null` ]]; then echo "Yes"; else echo "No"; fi ,您可以检查是否可以执行[[ -f $path && -x $path ]] ...但这并不意味着写出命令的名称&#34;在shell中,它将被执行(你必须确保$path在$ PATH环境变量中。

一个简单的脚本使用上面的想法并在参数不是命令的情况下退出可能是这样的:

$path

告诉你是否需要不同的东西......

答案 2 :(得分:0)

如果我理解你,你可以尝试以下方法:

SCRIPTNAME=$(basename "$0")   # in your case -> script

现在您可以查看:

if [ SCRIPTNAME -eq "$SCRIPTNAME" ]
then
    # your stuff here
fi

或者你想要别的什么?