Bash脚本:如何在“if”存在文件中的文件名之前传递通配符?

时间:2016-06-11 19:08:57

标签: bash wildcard

我希望能够检查文件是否存在。

if [ -f "/var/run/screen/user/*.$InstanceName" ]; then
        echo -e "screen instance exist"
fi

但是威尔卡/小丑不起作用

我如何通过它?

1 个答案:

答案 0 :(得分:1)

您的通配符不起作用,因为它已被引用。然而,取消引用它可能会破坏[命令,因为它只需要一个文件名参数,如果两个或多个文件都是全局的,它就会破坏。

在bash中你可以使用compgen生成一个与globbing模式匹配的文件列表,如果没有找到globs,它还会设置正确的退出状态,这是一个hack?我不知道,但它可能看起来像:

if compgen -G "/var/run/screen/user/*/$InstanceName" > /dev/null; then
  printf "screen instance exist\n"
fi