如何检查bash脚本中是否执行过该命令,并避免再次执行该命令?



我不想在每次启动包构建命令之前都源代码我的。sh脚本…因为我总是忘记做这个。这些任务是可重复的,因此创建一个shell脚本是有意义的。

:如果命令

$source env.sh

执行了一次,我不想再执行这个命令,而是继续执行其他命令。有什么解决办法吗?我的脚本:

#!/bin/bash
set -e
echo "Today is $(date)"
echo "--------------------"
sleep 1.5
echo "1. Pass env variables"
source env.sh
echo "2. Check the configuration of Packer template"
packer validate example.pkr.hcl
echo "3. Build the image"
#packer build example.pkr.hcl

在脚本中设置一个变量,然后在脚本的顶部测试该变量的存在。例如:

#!/bin/bash
if [ "${ALREADY_LOADED}" -ne "YES" ]; then
...
# Put commands here
...
ALREADY_LOADED=YES
fi

如果您希望将其持久化到子进程,那么通过export来使用环境变量而不是本地变量。但是要注意:有些东西不是由子进程继承的。例如,如果您的脚本设置了一个数组变量,子进程将无法看到该数组。因此,您可能希望在if...then...fi子句之外保留一些命令。

最新更新