我有以下代码,它正在执行 wc -lc 命令,将其传输到 AWK 命令中,该命令打印文件大小(以 MB 为单位)及其内容内的行数。 如果文件“file.csv”存在,则效果很好,但如果不存在,目的是打印 0 0 但它只是打印错误消息“没有这样的文件或目录”,这里我什么也不做有代码:
wc -lc < "file.csv" | awk '{if($1) {FileSize = $2 / 1024 / 1024; RecordCount = $1 - 1; print FileSize, RecordCount} else{FileSize = 0; RecordCount = 0; print FileSize, RecordCount}}'
结果:
file.csv: No such file or directory.
它不会打印0 0,如果找不到文件,这就是我所期望的。
shell 在设置命令时会遵循重定向,因此如果找不到文件,shell 本身可以中止。
如果您不希望这样,请考虑:
(
if test -e file.csv; then exec <file.csv; else exec </dev/null; fi
wc -lc | awk '{if($1) {FileSize = $2 / 1024 / 1024; RecordCount = $1 - 1; print FileSize, RecordCount} else{FileSize = 0; RecordCount = 0; print FileSize, RecordCount}}'
)