我对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文件列表