パラメータリストと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
ペアです。ここで、およびkey
はvalue
両方とも文字列です。接続を介して位置パラメータを単純な文字列に減らすと、それらを別々に保持するのが難しく、最終的に使用しようとすると正しく参照するのが難しくなります。
代わりに、コマンドラインの次のスクリプトに渡したい場所引数(コマンドライン引数)を渡してください。
#!/bin/bash
first_arg=$1
shift
# later ...
./my_other_script "$@"
他のスクリプトでは:
#!/bin/bash
# use "$@" here
foo --bar "$@"