Bash检查是否显示文件不存在?

尼克

在bash中运行以下命令:

   stuff=`rpm -ql <some package> | grep dasdasdfd`

(软件包中不存在的文件,退出代码= 1,stdout为空)

  if [ -f $stuff ]; then echo "whaaat"; fi

上面的命令检查文件是否存在...但是:

file $stuff

只需打印文件的使用信息...,然后

stat $stuff

缺少操作数...

有人可以解释为什么吗?这是一个错误吗?难道我做错了什么?我只想确保包中的文件存在于fs上

马丁·图尔诺伊(Martin Tournoij)

您可能需要$stuff用引号引起来

if [ -f "$stuff" ]; then

通常,您几乎总是想在使用路径名的地方加上引号。

我发现将壳脚本中的变量或变量视为“宏”会更有用,这些变量在首次使用时会扩展为它们的值。这与几乎所有其他编程语言中的变量都不同。

因此,如果$stuff包含hello world(请注意空格),则将与您键入的内容相同:

[ -f hello world ]

这显然是一个错误。

在这种情况下,您提到要处理的文件不存在,因此$stuff实际上是空的,这就像键入:

[ -f ]

这实际上是有效的,但始终会成功。testPOSIX规范中可以看出,这有点晦涩难懂test如果只有一个参数(在这种情况下,参数为-f,则总是成功

1个参数:
如果$ 1不为null,则退出true(0);否则为0。否则,退出false。

这可能是为了便于编写:

[ $variable_that_may_or_may_not_be_defined ]

如果添加引号,则传递两个参数,然后发生更多理智的事情:

if [ -f "" ]; then

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查文件是否存在,如果不存在则显示特定的div

检查文件是否存在,如果不存在则创建它

mysqli显示文件不存在事件,尽管它确实存在

Bash:如果文件不存在,请创建它,否则请检查它是否可写

如何判断Bash中是否不存在常规文件?

检查目录是否不存在

检查元素是否不存在

检查会话是否不存在php

Laravel 检查 var 是否不存在

检查网站是否存在,如果不存在,则在表单输入字段下显示错误消息

如何检查文件是否存在并执行命令(如果不存在)?

R:检查“今天的”文件是否存在,如果不存在,请下载

检查FTP文件夹是否存在,如果不存在,则创建它

如何检查文件是否已存在(如果不存在),请在Python上下载?

检查批处理脚本中是否存在任何文件,但不存在目录

ls -lrt显示不存在的文件

diff显示不存在的文件

Shell脚本检查dir目录是否存在然后更改路径,如果不存在则使用该名称创建dir并检查文件名不存在

Laravel Route-检查ID是否不存在并显示404

选择下拉值检查并显示数据库中是否不存在

检查目录是否存在,如果不存在则创建

PHP 检查文件是否在任何目录中不存在

shell程序显示文件的内容,否则基于用户的目录中不存在的打印文件将输入文件名

MySQL选择是否存在,但如果不存在,则显示no

python - 检查文件夹中是否存在任何 .jpg 文件,如果不存在则等待

检查文件是否存在[BASH]

如何创建检查记录是否在mysql中不存在?

检查div是否不存在于javascript中

检查页面上是否不存在类