首页 > 解决方案 > bash 脚本的 Linux 环境变量

问题描述

我正在尝试创建一些 bash 脚本来导出过去 24 小时内创建的新电子邮件帐户。它使用 GAM(谷歌应用程序管理器)来获取过去 24 小时内创建的帐户,并过滤帐户创建时间。为此,我想创建一个环境变量,它的今天日期格式与 G Suite API 的格式相同。我创建的用于创建日期变量的脚本(date.sh)如下所示

#!/bin/bash
export todayDate=$(date +'%Y-%m-%dT%H:%M:%S.000Z')
echo $todayDate

我希望它在午夜之后立即运行,并使用 cron 作业来设置当天的日期。这似乎有效。我遇到的问题是,当我运行下一个脚本时

#!/bin/bash
source /home/user/date.sh
export GAM_CSV_ROW_FILTER="creationTime:time>=$todayDate"
/home/user/bin/gam/gam print users query orgunitpath="'/Staff Accounts'" externalid organization firstname lastname phone creationtime > /home/user/accounts.csv

似乎将变量重置为第二个脚本运行的时间。例如,如果我让 cron 在 00:00:00 运行第一个脚本,在 06:00:00 运行第二个脚本,则在第二个脚本运行时变量似乎是 06:00:00,而不是到我希望的 00:00:00。

也许我已经把它复杂化了,理想情况下我只会让它导出变量而不必使用

source /home/user/date.sh

但我似乎无法找到将变量传递给 bash 的方法,因为脚本是一个子进程。

希望这是有道理的,我对 bash 脚本和 Linux 还很陌生,因此我们将不胜感激。

标签: bashcronenvironment-variables

解决方案


推荐阅读