我不想在每次启动包构建命令之前都源代码我的。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
子句之外保留一些命令。