【发布时间】:2018-06-10 16:01:28
【问题描述】:
我正在使用 macOS Sierra,它具有 bash 版本 3.2.57(1)-release。我想使用shasum -c /files.txt > /out.txt 验证文件的校验和,其中files.txt 包含校验和,out.txt 是保存结果的位置。
我想要做的是以某种方式使用 grep 来过滤掉并只将错误保存到out.txt。这怎么可能? $? 可以派上用场吗?
谢谢
其他信息:
--BEGIN /file.txt CONTENTS--
865f34fe7ba81e1337ddbdfc511547d190367bbf3dad21aeb6da3eec621044f5 /samplefile.good
93ddaab2f672ff976756f50677646cafebabe93244f615e687db01399cf3fbc6 /samplefile.bad
--END /file.txt CONTENTS--
--BEGIN USER INTERACTION--
$ shasum -c file.txt
/samplefile.good: OK
/samplefile.bad: FAILED
shasum: WARNING: 1 computed checksum did NOT match
$ shasum -c file.txt 2> errors.txt
/samplefile.good: OK
/samplefile.bad: FAILED
$ cat errors.txt
shasum: WARNING: 1 computed checksum did NOT match
$ shasum -c file.txt 2>&1 > errors.txt
shasum: WARNING: 1 computed checksum did NOT match
$ cat errors.txt
/samplefile.good: OK
/samplefile.bad: FAILED
--END USER INTERACTION--
这就是我想要的:
$ cat errors.txt
/samplefile.bad: FAILED
或
$ cat errors.txt
/samplefile.bad: FAILED
shasum: WARNING: 1 computed checksum did NOT match
【问题讨论】:
-
看起来并不完全符合我的要求,但我仍然可以试一试。我只想让
grep或类似的东西,只过滤掉shasum输出的错误。 -
如果错误写入
stderr,那么2> out.txt就足够了。 (/out.txt可能会得到Permission denied)。
标签: bash macos grep macos-sierra errorlevel