我希望能够在crontab中每小时播放一个脚本,同时回顾以前在系统启动时定义的环境变量(类似于/etc/profile文件中的export EXTENRALIP=0 )。此环境变量将由此脚本修改,并在下一次轮转时检索该值。我试过这样做,但是导出值不会改变变量。
rotation.sh
#!/bin/bash
LOGFILE=/var/log/dns.log
. livebox.sh
. network.sh
. dns.sh
# Grab the var env
IPWAN=$(echo $EXTERNALIP)
# Grab the IPWAN
IP=$(get_livebox_ip)
# Set the var env if changed
if [ "$IPWAN" != "$IP" ]
export EXTERNALIP=$IP发布于 2021-11-09 06:01:15
就像丹提到的,我认为那是不可能的。
考虑从磁盘中写入和读取数据。
echo "$IP" > /somewhere/externalip
IPWAN="$(cat /somewhere/externalip)"发布于 2021-11-08 22:45:25
那是做不到的。
不管cron作业不会继承任何存在的环境,脚本的环境在退出时都会消失。即使没有cron,这也是行不通的。
您可以使用shebang #!/bin/bash -l来获得脚本源/etc/profile,或者在crontab中使用EXTERNALIP=0 /path/to/rotation.sh,但是除了在每个作业的环境中之外,您永远不能在任何地方更新变量。
您可能会在shell中寻找脚本来使其工作,但是每个cron作业都是一个新的shell,当任务完成时,它的环境就会消失。
https://stackoverflow.com/questions/69890143
复制相似问题