【问题标题】:Bash script to parse the output of a command [duplicate]用于解析命令输出的 Bash 脚本 [重复]
【发布时间】:2016-09-21 13:22:04
【问题描述】:

例如下面的命令

# 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

【问题讨论】:

    标签: linux bash grep sh sha512


    【解决方案1】:

    应该这样做:

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

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

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

    【讨论】:

    • 这是非常快速直接的答案。谢谢!
    【解决方案2】:

    awk做吧

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

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

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

    【讨论】:

    • 这也很好用!谢谢!
    猜你喜欢
    • 2023-04-03
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多