3

b過去にうまく機能した別の関数にすべてのパラメーターを渡すbash関数があります。

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 に答える