我尝试编写node.js source和corresponding SHASUMS256.txt的下载脚本,校验和,grep for OK,并且只有在成功时使用grep' s退出代码0才会返回结果-q标志:
wget http://nodejs.org/dist/latest/node-v0.10.26.tar.gz
wget http://nodejs.org/dist/latest/SHASUMS256.txt
sha256sum -c SHASUMS256.txt|grep -q OK
然而,grep正在返回一系列不匹配的行"没有这样的文件或目录"错误(虽然不是全部,令人困惑):
> sha256sum -c SHASUMS256.txt|grep -q OK
sha256sum: node-v0.10.26-darwin-x64.tar.gz: No such file or directory
sha256sum: node-v0.10.26-darwin-x86.tar.gz: No such file or directory
sha256sum: node-v0.10.26-linux-x64.tar.gz: No such file or directory
sha256sum: node-v0.10.26-linux-x86.tar.gz: No such file or directory
sha256sum: node-v0.10.26-sunos-x64.tar.gz: No such file or directory
sha256sum: node-v0.10.26-sunos-x86.tar.gz: No such file or directory
sha256sum: node-v0.10.26-x86.msi: No such file or directory
sha256sum: node-v0.10.26.pkg: No such file or directory
sha256sum: node.exe: No such file or directory
知道问题在这里吗?如果校验和成功(例如grep匹配OK),我想从这个脚本返回的代码是0,如果失败,则返回非0的代码。
答案 0 :(得分:3)
当您将命令的输出作为输入传递给其他命令时,只有stdout
的第一个命令作为stdin
传递给第二个命令。
您看到的行由sha256sum
程序发送到stderr
。
您可以通过stderr
向<{p}} sha256sum
发送grep
来验证这一点
sha256sum -c SHASUMS256.txt 2>&1 |grep -q OK
希望有所帮助。