首页 > 解决方案 > 没有 shebang = sha256sum 或其他 shasum = 错误的 shell 脚本

问题描述

我需要做一些 sha256sum (或者 shasum -a 256 如果 sha256sum 不是通过自制软件安装的)。

但是我有一个大问题,因为如果我没有 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 配置文件)是否有错误,或者我需要一个特殊的环境吗?

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

问候

标签: bashmacosshellzshshebang

解决方案


@GordonDavisson 的解决方案通过替换为 like 可以按预期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

现在,我需要更新我的脚本以获得正确的 shebang 和/或使用 printf。谢谢


推荐阅读