Pourquoi la vérification de la sum de contrôle SHA256 avec `sha256sum` échoue sur Debian et fonctionne sur Ubuntu?

Sur Ubuntu 14.04, sha256sum de coreutils fonctionne comme prévu:

 echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c /tmp/myfile: OK 

Cependant, la même command avec le même file sur Debian Wheezy échoue:

 sha256sum: standard input: no properly formatted SHA256 checksum lines found 

Je ne comprends pas ça. Comment puis-je vérifier la sum de contrôle de manière fiable dans un script shell sur Debian?


Sur Ubuntu 14.04:

 ⟫ sha256sum --version sha256sum (GNU coreutils) 8.21 

Sur Wheezy:

 $ sha256sum --version sha256sum (GNU coreutils) 8.13 

les pages de manuel sur les deux systèmes d'exploitation disent:

 SYNOPSIS sha256sum [OPTION]... [FILE]... DESCRIPTION Print or check SHA256 (256-bit) checksums. With no FILE, or when FILE is -, read standard input. [...] -c, --check read SHA256 sums from the FILEs and check them 

Il se soucie de l'espacement. Si vous exécutez:

 sha256sum /dev/null 

vous obtenez

 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null 

(deux espaces). Lorsque vous utilisez l' echo comme ça, il n'y a qu'un seul espace entre les mots.

La version 8.13 veut le format exact de sa sortie. Si vous utilisez:

 echo "$SUM $FILE" | sha256sum -c 

(encore une fois, deux espaces) ça devrait marcher. Les versions plus récentes ne se soucient pas du nombre d'espaces, donc cela fonctionnera aussi avec eux.