同じディレクトリにあるファイルで定義された変数値を使用する

同じディレクトリにあるファイルで定義された変数値を使用する

存在するこのGitHubリポジトリというディレクトリがありますnwsm。このディレクトリには、nwsm.sh基本スクリプト(他のスクリプトを実行するスクリプト)を含むファイルが含まれています。

このディレクトリには、基本スクリプトが一度に 1 つずつ実行する下付き文字を含む他の多くのファイルも含まれています。

私はnwsm.sh上記のすべての添え字で最終的に使用されるべきいくつかの変数を宣言しました。変数の拡張と添字は、nwsm.sh実行時に同じ方法で実行する必要があります。


このディレクトリには、下付き文字ファイルを除く他のファイルは含まれておらず、将来のnwsm.sh場合には他のファイルを含めないでください。

実行を開始したらnwsm.sh、で定義された関連値を使用して添字内の変数拡張を実行する必要があります。nwsm.sh

以下は基本スクリプトですnwsm.sh(まずユーティリティの変数宣言read、次に隣接するファイルを実行します)。

#!/bin/bash
domain="$1" && test -z "$domain" && exit 2

read -sp "Please enter DB root password:      " dbrootp_1 && echo
read -sp "Please enter DB root password again:" dbrootp_2 && echo
if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched" && exit 1 fi

read -sp "Please enter DB user password:      " dbuserp_1 && echo
read -sp "Please enter DB user password again:" dbuserp_2 && echo
if [ "$dbuserp_1" != "$dbuserp_2" ]; then echo "Values unmatched" && exit 1 fi

"$PWD"/tests.sh
"$PWD"/wp-cli.sh
"$PWD"/nginx.sh
"$PWD"/dbstack.sh
"$PWD"/certbot.sh

で定義された値をnwsm.sh実行するときにすべての対応項目を使用できるようにするにはどうすればよいですか?.nwsm

ベストアンサー1

デフォルトのスクリプトが別のスクリプトを実行したときに変数を表示したい場合は、そのexport変数を使用できます。

$catowner.sh
#!/bin/sh
金持ちを読んで
輸出金持ち
./foo.sh
$猫 foo.sh
#!/bin/sh
echo "fooは$ fooです"

$./main.sh
無意味な言葉
fooは言葉にならない音です。
$

他のスクリプトは基本スクリプトのサブプロセスとして実行され、exported変数は環境を介して渡されます。これらのどれも変数を特定のディレクトリ内のスクリプトに制限するわけではなく、エクスポートされた変数は基本スクリプトによって開始されたすべてのプログラムで見ることができます。変数を渡さずに特定のプログラムを実行するには、export -nまずそのプログラムのエクスポートをキャンセルする必要があります。変数の転送を防ぐために、他のスクリプトの先頭からエクスポートをキャンセルすることもできます。

また、デフォルトのスクリプト(または他のスクリプト)の最後で変数を消去したり、エクスポートをキャンセルしたりする必要はありません。変数は実行中のシェルプロセスのメモリにのみ存在し、プロセスが終了すると消えます。

(一方、変数をスタンドアロンプ​​ロセスに渡すには、その変数をファイルまたは類似のファイルに保存する必要があります。)


もちろん、ほぼ同じタイプのモジュール性を達成する別の方法は、プログラムを関数に分割し、別々のファイルに保存してから、sourceこれらのファイルを基本スクリプトとは別に保持することです。これにより、プログラム内のすべての変数がすべての関数に表示されます。 (これが望ましいかもしれないし、望ましくないかもしれません。)

おすすめ記事