1

別のスクリプトcaller.cshを呼び出すスクリプトがありcalled.shます。setコマンドを使用していくつかの変数を宣言しますcaller.csh(例set alpha = 10)。コマンド ライン パラメータとして渡さずにcalled.sh(たとえば)で使用するにはどうすればよいですか?echo $alpha

called.shスクリプトはスタンドアロンで実行でき、変数もスクリプトで定義されていることに注意してください。これらの変数値を の値でオーバーライドしたいと思いますcaller.sh。だから私はif not defined $alpha, then set alpha =in のようなものを使いますcalled.sh

4

1 に答える 1

1

1 つの方法は、(を使用してsetenv) 環境変数として設定することです。

ただし、これは良い方法ではありません。変数をシェル スクリプトに渡すためのインターフェイスは、コマンドライン オプション/引数を介して行う必要があります。シェル スクリプトの場合は、スタンドアロン風にする必要があります。コマンドラインから直接実行するときに、同じ引数を他にどのように渡しますか?

編集:質問の2番目の部分の更新に続いて。を使用しgetoptます。変数をデフォルト値に設定しgetopt、ユーザーがコマンドライン オプション/引数として渡す場合にそれらの値をオーバーライドするために使用できます。このアプローチは、あらゆる種類のグローバルに定義された変数よりも適しています。

于 2013-03-23T16:39:59.397 に答える