3

我有一个 bash 函数,它将所有参数传递给另一个b过去运行良好的函数。

a () {
  b "$@"
}

a -input /input -output "with blanks"

现在我想修改一些参数并将更新的参数传递给b.

我正在考虑重建$@一个变量的副本ARGV。我曾尝试使用“、”甚至制表符来保留这些字段。但它们都失败了。

你有什么好主意吗?

$@ 的数据类型是什么以及为什么它正确捕获字段?

参考

使用 '

  ARGV=""

  while [ $# -ne 0 ] ; do
    case "$1" in
      -*)
        ARGV="$ARGV $1 '$2'"
        shift; shift; continue;;
    esac
  done

使用 ”

  ARGV="$ARGV $1 \"$2\""

使用选项卡

  IFS=$'\t'
  ARGV="$ARGV $1 "$'\t'"$2"$'\t'
4

1 回答 1

3

例如,您可以将参数放入数组

X=("$@")

随心所欲地折磨它。并恢复到位置参数

set -- "${X[@]}"

或将其传递给其他地方

./elsewhere "${X[@]}"
./elsewhere "$@"
于 2011-12-06T10:21:50.440 回答