regex - 如何将字符串解析为变量
问题描述
我希望能够读取包含如下行的文件的每一行:redhat-ubi-ubi7-7.8
wherevendor=redhat, product=ubi, image_name=ubi7, tag=7.8
以便我可以解析这些行,以便执行以下操作:
while read -r line;
do
vendor=sed/awk
product=sed/awk
image_name=sed/awk
version=sed/awk
echo "Copying $image_name:$version into registry..."
skopeo copy \
docker-archive:/opt/app-root/src/ironbank-images/"$line" \
docker://"$REGISTRY_DOMAIN"/"$vendor"/"$product"/"$image_name":"$version" \
--dest-creds="$REGISTRY_USERNAME":"$REGISTRY_PASSWORD" \
--dest-tls-verify=false
done < "$SYNC_IMAGES"
如何分离这个字符串以获得我的用例所需的结果?
解决方案
的read
多变量功能和 bash 的组合IFS
可以解决问题:
while IFS=- read -r vendor product image_name version;
do
echo "Copying $image_name:$version into registry..."
skopeo copy \
docker-archive:/opt/app-root/src/ironbank-images/"${vendor}-${product}-${image_name}-${version}" \
docker://"$REGISTRY_DOMAIN"/"$vendor"/"$product"/"$image_name":"$version" \
--dest-creds="$REGISTRY_USERNAME":"$REGISTRY_PASSWORD" \
--dest-tls-verify=false
done < "$SYNC_IMAGES"
推荐阅读
- windows - why i keep having the same error in that code
- python - 在 numpy jupyter notebook 中打印浮点精度
- php - 多个使用openlog php
- excel - 如何通过excel vba选择网页中的特定下拉元素
- node.js - Mongodb自定义对象id
- ajax - 在for循环mysql中运行多查询
- android - 使用带有身份验证标头的 web 视图使用 REST API
- vuejs2 - 为什么在 Vue-Router 参数之后我无法访问数据?
- jmeter - 当我尝试使用 JMeter 加载 500 个用户时,由于 IP 阻塞而显示连接超时
- wpf - 按钮图像路径未在 wpf 中聚焦