孫プロセスに使用するパラメータを渡す

孫プロセスに使用するパラメータを渡す

パラメータリストと3つのプロセスがあります。

bash_script -> child -> grandchild

パラメータリストはSun Tzu用です。 3 つのプロセスをすべて変更できます。祖父スクリプトは独自にパラメータを取得します。

以下は、残りのパラメータを孫に渡す正しい方法ですか?

#!/usr/bin/env bash
# This is the grandfather    
first_arg="$1"
shift 1;

export MY_ARGS="$@"

後で、次のように孫プロセスを呼び出すコマンドの一部として、子プロセスの環境変数を「伝播」します。

grandchild --foo "$MY_ARGS"  # append $MY_ARGS as arguments to foo

ベストアンサー1

スクリプト内の配列を文字列にダウングレードしないでください。環境変数とその値は単純なkey=valueペアです。ここで、およびkeyvalue両方とも文字列です。接続を介して位置パラメータを単純な文字列に減らすと、それらを別々に保持するのが難しく、最終的に使用しようとすると正しく参照するのが難しくなります。

代わりに、コマンドラインの次のスクリプトに渡したい場所引数(コマンドライン引数)を渡してください。

#!/bin/bash

first_arg=$1
shift

# later ...

./my_other_script "$@"

他のスクリプトでは:

#!/bin/bash

# use "$@" here
foo --bar "$@"

おすすめ記事