シェルスクリプトで環境変数を動的に設定および参照する必要がある場合は、回避策があります。やりがいがあるかどうかは自分で判断してください。
この戦略には、環境変数を設定およびエクスポートするためのコードを含む「ロード」スクリプトを動的に書き込む「セット」スクリプトが含まれます。'load'スクリプトは、変数を参照する必要のある他のスクリプトによって定期的に実行されます。ところで、同じ戦略は、変数の代わりにファイルを読み書きすることによって行うことができます。
これが簡単な例です...
Set_Load_PROCESSING_SIGNAL.sh
#!/bin/bash
PROCESSING_SIGNAL_SCRIPT=./Load_PROCESSING_SIGNAL.sh
echo "#!/bin/bash" > $PROCESSING_SIGNAL_SCRIPT
echo "export PROCESSING_SIGNAL=$1" >> $PROCESSING_SIGNAL_SCRIPT
chmod ug+rwx $PROCESSING_SIGNAL_SCRIPT
Load_PROCESSING_SIGNAL.sh(これは上記の実行時に動的に作成されます)
#!/bin/bash
export PROCESSING_SIGNAL=1
Test_PROCESSING_SIGNAL.shでこれをテストできます
#!/bin/bash
PROCESSING_SIGNAL_SCRIPT=./Load_PROCESSING_SIGNAL.sh
N=1
LIM=100
while [ $N -le $LIM ]
do
# DO WHATEVER LOOP PROCESSING IS NEEDED
echo "N = $N"
sleep 5
N=$(( $N + 1 ))
# CHECK PROCESSING_SIGNAL
source $PROCESSING_SIGNAL_SCRIPT
if [[ $PROCESSING_SIGNAL -eq 0 ]]; then
# Write log info indicating that the signal to stop processing was detected
# Write out all relevent info
# Send an alert email of this too
# Then exit
echo "Detected PROCESSING_SIGNAL for all stop. Exiting..."
exit 1
fi
done