本文只介绍生产环境中遇到的问题,为docker拉取、下载、推送镜像相关内容的问题,现根据情况列出解决办法之一!
- shell脚本中定义变量给docker,出现invalid reference format
demo.sh
#!/bin/bash
var='cat /data/test/***.txt | grep test'
for line in $var
do
echo "已查到相关镜像,即将拉取~"
echo "准备拉取:"$var
docker pull $line
done
[上面脚本仅为提供测试,该脚本中在执行到docker pull的过程中会报错invalid reference format];在命令行执行docker pull *****.镜像 可以成功,在脚本中不行,sh -x 查看后 发现 变量传过来的
l
i
n
e
值
带
有
′
′
符
号
,
但
是
查
看
line值带有 ” 符号,但是查看
line值带有′′符号,但是查看var是对应的镜像名没问题;
经排查后原因为:” ****.txt 的镜像文件是从windows里拉到linux中的,存在换行符\n 由于换行符在shell里是默认不显示的,为空格占位符 “,所以可直接复制windows文档中的所有内容到linux中,也可以使用 grep test ****.txt | tr ‘\n’ ’ ’ && cat ****.txt | grep test | tr ‘\n’ ’ ’ 使用 tr 来将\n 替换。
- 将换行符替换后再次测试脚本可成功,如遇到其他情况可参考shell中识别变量的相关写法和命令修改,也存在符号大小写,字母大小写,中英文符号对应的问题;
版权声明:本文为lxy100202原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。