如何在BASH中检查脚本的给定参数是否为“命令名称”?
例如:我知道您可以检查路径是[[ -d $path ]]
的文件夹,还是[[ -f $path ]]
的普通文件。
我希望我的./script
只接受命令名称。
答案 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
或者你想要别的什么?