本文只介绍生产环境中遇到的问题,为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值带有 '' 符号,但是查看 linevar是对应的镜像名没问题;

经排查后原因为:” ****.txt 的镜像文件是从windows里拉到linux中的,存在换行符\n 由于换行符在shell里是默认不显示的,为空格占位符 “,所以可直接复制windows文档中的所有内容到linux中,也可以使用 grep test ****.txt | tr ‘\n’ ’ ’ && cat ****.txt | grep test | tr ‘\n’ ’ ’ 使用 tr 来将\n 替换。
  • 将换行符替换后再次测试脚本可成功,如遇到其他情况可参考shell中识别变量的相关写法和命令修改,也存在符号大小写,字母大小写,中英文符号对应的问题;
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐