Cron正在从shell脚本中的环境变量中删除$character



我在docker容器中有一个环境变量,它存储了一个带有特殊字符的密码。这个特定的密码中包含一个$。我在shell脚本中输出这个环境变量。如果我手动运行脚本,一切都很好。当cron运行脚本时,$和下面的2个字符将被删除。我尝试过几种方法来转义特殊字符,最新的方法如下,但结果是一样的(手动操作很好,cron缺失(。对于这个例子,假设密码是blahbah$xy*blahbah,这就是我在运行脚本时看到的。如果cron运行该脚本,我会得到废话*废话

我的脚本(testVars.sh(:

#!/bin/bash
echo "Testing variables"
MY_PASS=$MY_PASSWORD
TEST_PASS=$(sed -e 's/[^a-zA-Z0-9,._+@%/-]/\&/g; 1{$s/^$/""/}; 1!s/^/"/; $!s/$/"/' <<< $MY_PASSWORD)
echo ${MY_PASS}
echo ${TEST_PASS}

我的密友:

BASH_ENV=/root/env_vars.sh
33 13 * * * root /opt/testVars.sh >> /opt/cron.log

我假设以这种方式在字符串中使用$符号实际上是可能的。

printenv命令之前,我在docker-entrypoint.sh文件中添加了以下内容,从而解决了这个问题:

export MY_PASSWORD=$(sed -e 's/[^a-zA-Z0-9,._+@%/-]/\&/g; 1{$s/^$/""/}; 1!s/^/"/; $!s/$/"/' <<<"$MY_PASSWORD")

感谢Ture pålsson为我指明了正确的方向。

相关内容

  • 没有找到相关文章

最新更新