首页 > 解决方案 > 创建校验和文件脚本

问题描述

我正在尝试创建一个 shell 脚本,该脚本将自动运行校验和命令,并在计算后将当前和子目录中每个文件的校验和保存到一个文件中。如何通过变量或类似方法实现这一点?

我当前的脚本:

md5sum=1
sha1sum=2
sha256sum=3
sha512sum=4

# Ask user for checksum algorithm.
echo "Available checksum algorithms are MD5 [1], SHA-1 [2], SHA-256 [3], \
SHA-512 [4]."
echo "Checksum algorithm: "
read chkalg

# Create checksum file containing file checksums.
echo "Computing and saving list of checksums for all files recursively in \
directory."
if $chkalg == 1; then
    find -type f -exec md5sum "{}" + > checksum-md5.txt
elif $chkalg == 2; then
    find -type f -exec sha1sum "{}" + > checksum-sha1sum.txt
elif $chkalg == 3; then
    find -type f -exec sha256sum "{}" + > checksum-sha256sum.txt
elif $chkalg == 4; then
    find -type f -exec sha512sum "{}" + > checksum-sha512sum.txt
elif echo "Invalid choice."
fi

# Notify user of checksum file creation completion.
echo "Checksums saved to file."

标签: bashshellvariableschecksum

解决方案


if需要修改为bash

if [ "$chkalg" -eq 1 ]; then
    find -type f -exec md5sum "{}" + > checksum-md5.txt
elif [ "$chkalg" -eq 2 ]; then
    find -type f -exec sha1sum "{}" + > checksum-sha1sum.txt
elif [ "$chkalg" -eq 3 ]; then
    find -type f -exec sha256sum "{}" + > checksum-sha256sum.txt
elif [ "$chkalg" -eq 4 ]; then
    find -type f -exec sha512sum "{}" + > checksum-sha512sum.txt
elif echo "Invalid choice."
fi

将登录名放在方括号中,变量放在引号中并-eq用于比较数字


推荐阅读