没有不值得去解决的问题,也没有不值得去学习的技术!

Analyzing and Resolving the Shell Script Error During Rancher Container Upgrades: sed: -e expression #1, char 37: unknown option to `s’

When upgrading the Rancher container, executing the SHELL script threw an error: sed: -e expression #1, char 37: unknown option to `s'

1. When upgrading the Rancher container, executing the SHELL script threw an error: sed: -e expression #1, char 37: unknown option to `s’, as shown in Figure 1.

When upgrading the Rancher container, executing the SHELL script threw an error: sed: -e expression #1, char 37: unknown option to `s'
Figure 1

2. The value of the environment variable CMCP_API_CFG_REDIS_PASSWORD was q5dHP@xCBUUJY^L, which caused the upgrade to fail. After changing the value to q5dHP@xCBUUJYL to remove the ^ symbol, I ran the upgrade again, but it still failed.

3. I then changed the value to q5dHPxCBUUJY^L to remove the @ symbol, and ran the upgrade again. This time, the upgrade succeeded.

Bash

sed -i "s@CMCP_API_CFG_REDIS_HOSTNAME@$CMCP_API_CFG_REDIS_HOSTNAME@g" /sobey/www/cmcp-api/.env;

4. Because the value of the environment variable CMCP_API_CFG_REDIS_PASSWORD was q5dHP@xCBUUJY^L, the upgrade failed. I ultimately decided not to change the original value; instead, I modified the SHELL file to replace @ with #, and the upgrade succeeded.

Bash

sed -i "s@CMCP_API_CFG_REDIS_HOSTNAME@$CMCP_API_CFG_REDIS_HOSTNAME@g" /sobey/www/cmcp-api/.env;

Bash

sed -i "s#CMCP_API_CFG_REDIS_HOSTNAME#$CMCP_API_CFG_REDIS_HOSTNAME#g" /sobey/www/cmcp-api/.env;

5. In summary, in SHELL, the default syntax for searching and replacing data is: sed ‘s/string_to_be_replaced/new_string/g’. However, the / delimiter can be replaced with other characters to avoid conflicts.

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系