2022-11-21|閱讀時間 ‧ 約 1 分鐘

UNIX 管道 pipe 的 echo 陷阱

要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了
echo "字串" | md5sum
但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
錯誤的示範
錯誤的示範
檢查一下,推測 Shell 下的 echo 可能讓字串變了,例如有多了換行字元之類的。於是,找 echo 的線上手冊,上面寫的很清楚,加 -n 參數,不要換行字元。
再試一次,果然加了 -n 參數就好了。
所以若要用 echo 後送給管道指令,正確的指令是這樣:
echo -n "字串" | md5sum
若是 MacOS 的電腦,指令如下:
echo -n "字串" | md5
正確的例子
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.