如果您需要在 shell 脚本中动态设置和引用环境变量,有一种变通方法。自己判断是否值得做,但在这里。
该策略涉及拥有一个“设置”脚本,该脚本动态编写一个“加载”脚本,该脚本具有设置和导出环境变量的代码。然后,需要引用该变量的其他脚本会定期执行“加载”脚本。顺便说一句,可以通过写入和读取文件而不是变量来完成相同的策略。
这是一个简单的例子......
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