Bash文件存在测试始终为真

Trikelef

我有以下bash脚本行来测试文件是否存在:

MYAPPPATH=$(find $APPDIR -iname myapp* -print)
if [ -e $MYAPPPATH ]
then
    echo "File exists" 
fi

但是,当以“ myapp”开头的文件不存在,因此MYAPPPATH =''时,上述检查将再次成功。查看使用时会发生什么,set -x并且文件不存在:

++ find /path/to/app -iname 'myapp*' -print
+ MYAPPPATH=
+ '[' -e ']'
+ echo 'File exists'

这是什么原因呢?

为了达到预期效果,我需要做什么?

cuonglm

当您的变量为空时,您的命令将变为:

[ -e ]

在这种情况下,您[..]使用一个参数调用-e字符串"-e"不为null,因此test返回true。

此行为由POSIX test定义

在下面的列表中,$ 1,$ 2,$ 3和$ 4表示要测试的参数:

0个参数:

退出假(1)。

1个论点:

如果$ 1不为null,则退出true(0);否则,返回true(0)。否则,退出false。

....

为了使它起作用,必须对变量加双引号

[ -e "$MYAPPPATH" ]

之所以有效-e,是因为带有空字符串的参数为false。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP对数组的“如果为真”测试始终返回“真”?

来自分类Dev

"if (-f $file_path1) {" 无论文件是否存在,始终为真

来自分类Dev

如果条件始终为真,则执行Bash脚本

来自分类Dev

如果语句始终为真

来自分类Dev

解析查询始终为真

来自分类Dev

如果返回始终为真

来自分类Dev

Java 数组 - 始终为真

来自分类Dev

RouterLinkActive "isActive" 始终为真

来自分类Dev

Bash脚本-测试文件是否存在

来自分类Dev

文件名前缀测试始终在bash中失败

来自分类Dev

文件存在时,http.FileServer始终为404

来自分类Dev

AngularJS表单验证始终为真

来自分类Dev

如果语句与枚举相比始终为真

来自分类Dev

如何修复“变量始终为真”或“...假”?

来自分类Dev

即使输入正确,if 语句也始终为真?

来自分类Dev

如何在不警告“比较始终为真”的情况下测试从int到size_t的转换?

来自分类Dev

尝试... catch:测试语句是否为真

来自分类Dev

Rails 验证字段为真(如果存在)

来自分类Dev

sizeof(size_t)== sizeof(void *)始终为真吗?

来自分类Dev

(n&m)<= m始终为真吗?

来自分类Dev

std :: string :: npos == -1是否始终为真?

来自分类Dev

预处理程序的相等性评估始终为真

来自分类Dev

为什么((ans!='N')||(ans!='Y'))始终为真?

来自分类Dev

为什么我的JavaScript if语句始终为真?

来自分类Dev

T(n)> = T(n-1)始终为真吗?

来自分类Dev

为什么我的布尔值始终为真?

来自分类Dev

为什么((ans!='N')||(ans!='Y'))始终为真?

来自分类Dev

可为空的十进制如果始终为真

来自分类Dev

文件存在,但打开的文件仍始终返回-1

Related 相关文章

热门标签

归档