shell 使用数组及字符串截取

最近代码发布要迁移到 jenkins,需要写一个构建脚本模板提供给研发人员,用python写可能对研发和测试提高了使用门槛,只能用shell了

  • 数组
    百度了一下发现 shell使用的数组定义是用括号起来的,不同元素之意用空格分开,ex: test.sh arr=('aa' 'bb' 'cc')
    执行 sh test.sh的时间老是报这个数组的括号语法错误 Syntax error: "(" unexpected,百度了一下发现是shell的原因
    file
    使用 bash test.sh就没有问题了,使用 ${arr[0]} 来取值
  • 字符串截取
    在 git 仓库里 使用 git checkout -f commitid ,结果如下:
    HEAD is now at 9f212321... test deploy script
    目的是想要获取 commit 提交信息的,因为第一次拉代码执行这个命令时,在这行上面还会有其它信息,所以在取最后一行,最后一行 hash(9f212321...) 后面的内容就是我们想的提交信息,使用命令:
    hash_msg=`git checkout -f ${commit_hash} 2>&1 | tail -1`
    hash_msg=${hash_msg#*...}
    echo "Commit message: ${hash_msg}"

    使用管理的加上 tail -1 来获取最后一行,如果没有加上 2>&1 这个最后一行是无法赋值给 hash_msg的,具体原因还不明,最后使用 ${hash_msg#*...} 来获取信息,# 表示操作符,*... 表示从左到右匹配 ...,截取 ... 后面的字符,参考 https://baijiahao.baidu.com/s?id=160642549...

本作品采用《CC 协议》,转载必须注明作者和本文链接
雪花飘
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1
  1. 印象中 POSIX SHELL 标准是不支持数组的,Bash 对数组进行了「有限的」实现,所以需要使用 Bash。

  2. 更加简单的实现方式:echo "Commit message: $(git log -1 --pretty=%B)"
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!