在将列表转发到其他命令之前,通过某种转换(例如连接每个字符串)基本上“映射”bash 参数列表的最优雅方法是什么?我想到了使用 xargs 但我似乎无法概念化如何做到这一点。

function do_something {
    # hypothetically
    for arg in "$@"; do
        arg="$arg.txt"
    done

    command "$@"
}

do_something file1 file2 file3

结果是调用 command file1.txt file2.txt file3.txt

最佳答案

您所做的大部分是正确的,只是您需要使用数组来存储新参数:

function do_something {
    array=()
    for arg in "$@"; do
        array+=("$arg.txt")
    done

    command "${array[@]}"
}

do_something file1 file2 file3

关于bash: 'map' 函数参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42827234/

10-13 09:12