用于解析命令输出的Bash脚本

时间:2016-09-21 13:22:04

标签: linux bash grep sh sha512

例如下面的命令

# sha512sum /home/bin.tar

给出了这个输出:

7847a537b5db4434c075f18319caf12090cb0f19640190cbdf27e28a7b40b568127dfe9ec1c06604a87887ad403b618edeb42d1c41366b7a3e91d47b8d754ea4  /home/bin.tar

如何将此输出的哈希部分仅分配给bash中的变量,以便将计算出的哈希与另一个变量中的其他哈希进行比较?

我试过的只是在grep中指定匹配条件的部分(我只需要第一部分):

#! /bin/sh

RESULT="$(sha512sum /home/bin.tar | grep -o " /home/bin.tar")"

echo "Result:"

echo $RESULT

exit

输出

Result: 
/home/bin.tar

2 个答案:

答案 0 :(得分:3)

这应该这样做:

RESULT="$(sha512sum /home/bin.tar | cut -d' ' -f1)"

RESULT="$(sha512sum /home/bin.tar)"
RESULT="${RESULT%% *}"

RESULT="$(sha512sum /home/bin.tar | grep -o '^[^ ]*')"

答案 1 :(得分:2)

使用awk

执行此操作
RESULT="$(sha512sum /home/bin.tar | awk '{print $1}')"

或使用普通bash数组。只需在控制台上运行这些命令即可。

md5Output=( $(sha512sum /home/bin.tar) ); printf "%s\n" ${md5Output[0]}