没有shebang = sha256sum或其他shasum =错误的Shell脚本

时间:2019-06-07 04:41:25

标签: bash macos shell zsh shebang

我需要做一些sha256sum(如果未通过自制程序安装sha256sum,则为shasum -a 256)。

但是我有一个大问题,因为如果我没有shebang并且不为脚本加上bash或zsh解释器前缀,那么输出效果就不好。

sha256sum脚本:

echo -n 'toto@xyz.tld' | sha256sum
echo -n 'rehiohroie479236893264932fheoi' | sha256sum
echo -n '479823498326598230hgfiejdbgojeklnsfesahofwyr89379832' | sha256sum
echo -n 'w10+_+___!foiefioeoewo' | sha256sum
echo -n '[423].4324234234?5723854' | sha256sum

脚本shasum -a 256(如果没有可用的sha256sum:

echo -n 'toto@xyz.tld' | shasum -a 256
echo -n 'rehiohroie479236893264932fheoi' | shasum -a 256
echo -n '479823498326598230hgfiejdbgojeklnsfesahofwyr89379832' | shasum -a 256
echo -n 'w10+_+___!foiefioeoewo' | shasum -a 256
echo -n '[423].4324234234?5723854' | shasum -a 256

没有解释器前缀的输出(不好):./test.sh

6cb303b5912a48ac7b9629b7e6b0d0f019f90e3431fbec5e938b3ee51d73c396  -
bfa1f20ad0995f80699b17d2801f6851ae04a84beb0fb0f767970a49d0408157  -
22b1d65df960fe03a33db01529ab417f4936dcd9c2b95f9a010ffb4f1d82a2a5  -
d99e836ce741c053137d72eccbe8c6a96f9f6fa695b14e383673bf3b9872419a  -
c9bdf1c7556abe6763171d9a6a7f407cfbb355f7237bc81a9900f54e0d4f3e37  -

带有解释器前缀(好的)的输出:bash test.sh

e908b502b471063233985fa655eab4173178a466079a7e12a93bbfca3ef64d63  -
8d794d4d4f130fced60e52bf83f1fdfb67f8a852bc38f964672cdf62e64b2628  -
5a1efde32fe2ca5b7523c02cef944cb88b98dde8143f9ad7ad07f587502b8566  -
ce4a893b9372d74a78e74f0850308fb5d6b8a9cdba8c230e0ecfe2dbb38f72f7  -
2584ddef1f4b2900c3d1659c59a7cd107523318c686cd64eb1dd5cd8deff0e8b  -

如果我直接执行每行脚本,这是很好的输出。

您能告诉我我的设置(zsh配置文件)有错误还是我需要特殊的env吗?

我的实际版本:每个版本均可重现问题

  • 来自自制软件:

    zsh 5.7.1 (x86_64-apple-darwin18.2.0)
    GNU bash, version 5.0.7(1)-release (x86_64-apple-darwin18.5.0)
    
  • 苹果官方(macOS Mojave):

    zsh 5.3 (x86_64-apple-darwin18.0)
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
    

致谢

1 个答案:

答案 0 :(得分:0)

@GordonDavisson的解决方案按预期工作,方法是像这样将echo -n改成printf '%s'

printf '%s' 'toto@xyz.tld' | shasum -a 256
printf '%s' 'rehiohroie479236893264932fheoi' | shasum -a 256
printf '%s' '479823498326598230hgfiejdbgojeklnsfesahofwyr89379832' | shasum -a 256
printf '%s' 'w10+_+___!foiefioeoewo' | shasum -a 256
printf '%s' '[423].4324234234?5723854' | shasum -a 256

现在,我需要更新脚本以使其具有正确的显示效果和/或使用printf。 谢谢