【问题标题】:bash: pass multiple parameters from a single variablebash:从单个变量传递多个参数
【发布时间】:2018-02-26 22:11:35
【问题描述】:

在 bash 调用中,我想将一些常量参数放入变量中,并且不要在管道内丢失 StdOut 和 StdErr。

我有电话

git fetch origin "ref1:ref1" "ref2:ref2" "ref3:ref3"

让我们把这些常量值放到一个变量中

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

我看到了使用管道的解决方案,但我害怕以某种方式丢失输出。而且我不想使用文件进行缓存(tee 命令)。

echo $refs | xargs git origin

我不明白如何巧妙地做这些事情。或者如果可能的话。
稍后我想把输出放到一个变量中分析一下。

【问题讨论】:

  • 使用数组作为fetch_refspec="(ref1:ref1' 'ref2:ref2' 'ref3:ref3'); git fetch origin "${fetch_refspec[@]}"

标签: bash


【解决方案1】:

不要使用变量,使用数组!

declare -a gitArgs=("ref1:ref1" "ref2:ref2" "ref3:ref3")

并将其传递给您需要的命令,

git origin "${gitArgs[@]}"

【讨论】:

  • 遇到了严重的错误 :) Array variables may not (yet) be exported。但没关系。强制使用source 命令。
  • 另一方面,使用source 命令调用下标会杀死前置条件。 IE。现在必须转换下标开头的最短形式 if [[ ... ]]; then exit 并将其包裹在整个脚本中。而且我有很多先决条件))
猜你喜欢
  • 1970-01-01
  • 2015-12-26
  • 2011-03-29
  • 2015-06-27
  • 2021-11-04
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多