微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法根据 linux 脚本的输出将多个值传递到 CSV 文件中

如何解决有没有办法根据 linux 脚本的输出将多个值传递到 CSV 文件中

我编写了一个小脚本,它将接受用户输入,然后为其生成 md5sum 值

count = 0
echo "Enter number of records"
read number
while [ $count -le $number ]
do
    echo "Enter path"
    read path
    echo "file name"
    read file_name
    md5sum $path"/"$filename  #it shows the md5sum value and path+filename
    ((count++))
done

如何将这些值(路径、文件名和 md5sums)传递给 CSV 文件。 (假设用户选择输入超过 1 条记录)

输出应该像

/c/training,sample.txt,34234435345346549862123454651324      #placeholder values
/c/file,text.sh,4534534534534534345345435342342

解决方法

您可以提示用户输入文件的完整路径,而不是提示用户输入目录路径和该目录中的文件名。然后,您可以使用 bash string manipulations 从该路径中提取您需要的内容。


#!/bin/bash

set -euo pipefail

function calc_md5() {
    local path="${1}"
    if [[ -f "${path}" ]] ; then
        echo "${path%/*},${path##*/},$(md5sum ${path} | awk '{ print $1 }')"
    else 
        echo "
            x - Script requires path to file.
            Usage: $0 /path/to/file.txt
        "
        exit 1
    fi
}

calc_md5 "$@"

用法示例:

$ ./script.sh /tmp/test/foo.txt
/tmp/test,foo.txt,b05403212c66bdc8ccc597fedf6cd5fe

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。