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

Bash script to parse the output of a command

例如下面的命令

# 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

应该这样做:

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

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

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

awk

RESULT="$(sha512sum /home/bin.tar | awk '{print }')"

或使用普通 bash 数组。只需 运行 通过控制台执行这些命令。

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