gpt4 book ai didi

bash - 构建包含空格的参数列表

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:15 26 4
gpt4 key购买 nike

在 bash 中,可以转义包含空格的参数。

foo "a string"

这也适用于命令或函数的参数:

bar() {
foo "$@"
}

bar "a string"

到目前为止一切顺利,但如果我想在调用 foo 之前操纵参数怎么办?

这不起作用:

bar() {
for arg in "$@"
do
args="$args \"prefix $arg\""
done

# Everything looks good ...
echo $args

# ... but it isn't.
foo $args

# foo "$args" would just be silly
}

bar a b c

那么当参数包含空格时如何构建参数列表?

最佳答案

有(至少)两种方法可以做到这一点:

  1. 使用数组并使用"${array[@]}"展开它:

    bar() {
    local i=0 args=()
    for arg in "$@"
    do
    args[$i]="prefix $arg"
    ((++i))
    done

    foo "${args[@]}"
    }

    那么,我们学到了什么? "${array[@]}"${array[*]} 什么 "$@"$ *.

  2. 或者,如果您不想使用数组,则需要使用 eval:

    bar() {
    local args=()
    for arg in "$@"
    do
    args="$args \"prefix $arg\""
    done

    eval foo $args
    }

关于bash - 构建包含空格的参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com