unix中的[[-e$file]]命令



我对unix命令行还比较陌生,我并不真正理解这个命令的作用:

[[ ! -e "$text_file" ]] || { echo "Error: I cannot overwrite '$text_file'." >&2;}

有人有主意吗?

首先,它用逻辑OR ||运算符检查2个条件。

-e FILE-如果FILE存在并且是一个文件,则为True,所以这个条件否定了这个检查的结果。

如果这是false,那么它会打印消息并将其发送到stderr(>&2(。如果第一个条件为真,则不会评估第二个条件(当然,这是默认的逻辑或工作方式(

在Unix世界中,stdout通常用于一切正常工作的情况,stderr通常用于在出现问题时打印消息。

默认情况下,stdout和stderr都会打印到屏幕上。主要区别在于,>和|运算符默认捕获stdout,但不捕获stderr。

你也可以查看其他内容,如以下内容:

-r FILE-如果FILE存在并且可读,则为True
-w FILE-如果FILE存在并且可写,则为True
-x FILE-如果FILE存在并且可执行,则为True
-d FILE-如果FILE存在并且是一个目录,则为True
-e FILE-如果FILE存在并且是一个文件,则为True,而不考虑类型(节点、目录、套接字等(。
-f FILE-如果FILE存在并且是常规文件(而不是目录或设备(则为True

这将检查文件的存在性和!否定表达式查看测试的bash文件列表

相关内容

最新更新