我想让这个命令在一行中运行
echo The current version MD5: md5sum xxx.jar
echo The new version MD5: md5sum zzz.jar
我期待结果:
>当前版本的MD5:2791f2d6e9ac9e6a6a08919f031b2633
>新版本的MD5:2791f2d6e9ac9e6a6a08919f03000000
问题是如何运行它们以便它们在一行中打印出来
答案 0 :(得分:3)
您可以使用命令替换:
echo "The .... MD5: $(md5sum xxx.jar)"
或
echo "The .... MD5:" `md5sum xxx.jar`
修改强>
如果文件xxx.jar不存在,则输出如下:
md5sum: xxx.jar: No such file or directory
The current version MD5:
但您可以使用bash函数打印md5或错误。
#!/bin/bash
print_md5() {
local MSG=$1
local FILE=$2
local MD5
MD5=($(md5sum $FILE 2>&1))
# MD5 is an array, [0] contains the md5, [1] contains "file"
if [ $? -ne 0 ]; then
echo "MD5 error '$FILE'"
else
echo "$MSG: ${MD5[0]}"
fi
}
print_md5 "The current version MD5" xxx.jar
print_md5 "The new version MD5" zzz.jar
示例:(如果zzz.jar不存在)
The current version MD5: 5d8b35c0ac55c90e6829ee9a54437058
MD5 error 'zzz.jar'
答案 1 :(得分:3)
您需要从md5sum的输出中解析出MD5,所以:
echo "The current version MD5:`md5sum xxx.jar | awk '{ print $1}'`"
如果您不喜欢许多有趣的引语,也可以使用括号方法:
echo "The current version MD5:$(md5sum xxx.jar | awk '{ print $1}')"