Joh*_*Doe 158 bash shell md5sum
我使用md5sum为文件生成哈希值.但我只需要接收哈希值,而不是文件名.
md5=`md5sum ${my_iso_file}`
echo ${md5}
Run Code Online (Sandbox Code Playgroud)
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我怎样才能"删除"文件名并仅保留值?
Pet*_*r.O 177
一个简单的数组赋值工作...请注意,数组的第一个元素bash可以通过name没有[0]索引来解决,即$md5只包含md5sum的32个字符.
md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2
Run Code Online (Sandbox Code Playgroud)
jyz*_*jyz 147
那么另一种方式:)
md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`
Run Code Online (Sandbox Code Playgroud)
Bri*_*ell 50
您可以使用cut在空格上拆分线并仅返回第一个这样的字段:
md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)
Run Code Online (Sandbox Code Playgroud)
Gor*_*son 14
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
Run Code Online (Sandbox Code Playgroud)
Vla*_*cic 10
通过依靠head:
md5_for_file=`md5sum ${my_iso_file}|head -c 32`
Run Code Online (Sandbox Code Playgroud)
小智 8
另一种方法是:
md5sum filename | cut -f 1 -d " "
Run Code Online (Sandbox Code Playgroud)
cut会将行拆分为每个空格并仅返回第一个字段。
单程:
set -- $(md5sum $file)
md5=$1
Run Code Online (Sandbox Code Playgroud)
其他方式:
md5=$(md5sum $file | while read sum file; do echo $sum; done)
Run Code Online (Sandbox Code Playgroud)
其他方式:
md5=$(set -- $(md5sum $file); echo $1)
Run Code Online (Sandbox Code Playgroud)
(除非你非常勇敢且非常善于使用反斜杠,否则不要尝试使用反斜杠.)
这些解决方案优于其他解决方案的优点是它们只调用md5sumshell而不是其他程序,如awk或sed.这实际上是否重要是一个单独的问题; 你可能很难注意到差异.