之后回显并运行命令

时间:2014-04-29 07:34:12

标签: linux bash

我想让这个命令在一行中运行

echo The current version MD5: md5sum xxx.jar
echo The new version MD5: md5sum zzz.jar

我期待结果:

>当前版本的MD5:2791f2d6e9ac9e6a6a08919f031b2633

>新版本的MD5:2791f2d6e9ac9e6a6a08919f03000000

问题是如何运行它们以便它们在一行中打印出来

2 个答案:

答案 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}')"