Bash:如何从单个变量中传递多个参数

4
在bash调用中,我想将一些常量参数放入变量中,并在管道内不丢失标准输出和标准错误。
我有一个调用:
git fetch origin "ref1:ref1" "ref2:ref2" "ref3:ref3"

我将把那些常量值放到一个变量中

fetch_refspec="'ref1:ref1' 'ref2:ref2' 'ref3:ref3'"

我看到有一种使用管道的解决方案,但我担心会丢失输出。而且我不想使用文件进行缓存(tee 命令)。

echo $refs | xargs git origin

我不明白如何聪明地完成这个任务,或者它是否可能。
以后我想把输出放到一个变量中并进行分析。


1
使用数组作为 fetch_refspec="(ref1:ref1' 'ref2:ref2' 'ref3:ref3'); git fetch origin "${fetch_refspec[@]}" - anubhava
1个回答

8
不要使用变量,使用数组!
declare -a gitArgs=("ref1:ref1" "ref2:ref2" "ref3:ref3")

将其传递给所需的命令。
git origin "${gitArgs[@]}"

1
遇到了棘手的错误 :),出现了数组变量可能尚未导出。但是还好,被迫使用source命令解决问题。 - it3xl
另一方面,使用source命令调用子脚本会破坏前置条件。也就是说,现在必须将子脚本开头的最短形式if [[ ... ]]; then exit转换并覆盖整个脚本。而我有很多前置条件)) - it3xl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接