ci配置踩坑记
warning:
这篇文章距离上次修改已过701天,其中的内容可能已经有所变动。
脚本如下:
version = `git describe --abbrev=0`
other_version_split = '-'
time = `date "+%Y%m%d%H%M%S"`
# 当存在-时,说明并非正式版,在版本最后加入时间戳
if [[$version == *$other_version_split*]]
then
version=`${version}.${time}`
# 设定所有需要被发布的包
packages = ('ZeroSum', 'ZeroSum.Application', 'ZeroSum.Cors', 'ZeroSum.Domain', 'ZeroSum.Infrastructure', 'ZeroSum.Mapper', 'ZeroSum.Swagger')
# 开始发布
for package in ${packages[@]}
do
package_name = $package$version
echo package_name
done
1
报错信息:
[2021-12-15 16:23:02] + git describe --abbrev=0
[2021-12-15 16:23:02] + version = 1.0.0-alpha
[2021-12-15 16:23:02] /root/workspace@tmp/durable-e7aa8857/script.sh: 1: version: not found
script returned exit code 127
分析
报错信息很简短,能看出来第一二行其实已经执行了第一行脚本了。最后出来一个未找到version
这个变量的提示,紧接着返回了127
的返回值
突然想起来,shell
里关于变量的定义貌似是不能在=
左右加空格???!!!
删掉空格,再来一次
果然可以了!
不过出现新的问题了
新的问题:11: Syntax error: "("
错误信息:
[2021-12-15 16:42:07] + git describe --abbrev=0
[2021-12-15 16:42:07] + version=1.0.0-alpha
[2021-12-15 16:42:07] + other_version_split=-
[2021-12-15 16:42:07] + date +%Y%m%d%H%M%S
[2021-12-15 16:42:07] + time=20211215084207
[2021-12-15 16:42:07] /root/workspace@tmp/durable-6a4abdd7/script.sh: 11: Syntax error: "(" unexpected (expecting "fi")
script returned exit code 2
字面意义第一眼是语法错误,第十一行。
脚本:
version=`git describe --abbrev=0`
other_version_split='-'
time=`date "+%Y%m%d%H%M%S"`
# 当存在-时,说明并非正式版,在版本最后加入时间戳
if [[$version == *$other_version_split*]]
then
version=`${version}.${time}`
# 设定所有需要被发布的包
packages=('ZeroSum', 'ZeroSum.Application', 'ZeroSum.Cors', 'ZeroSum.Domain', 'ZeroSum.Infrastructure', 'ZeroSum.Mapper', 'ZeroSum.Swagger')
# 开始发布
for package in ${packages[@]}
do
package_name=$package$version
echo package_name
done
第十一行这里是数组的定义,来看一下是不是数组语法写错了。
果不其然,shell
中关于数组的定义是:
用()
包裹,用空格进行分离
这里我用了 ,
!!!
修改完后运行,还是一样的错误!?
再次仔细看了一遍脚本,语法上并没有问题。询问万能的度娘后发现有人也遇到这个问题了,据说是因为默认的解释器导致的:
debian/ubuntu上sh命令默认是指向dash,而不是bash
Debian Almquist shell,缩写为dash,一种 Unix shell,相容于POSIX标准。 它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少。 它由 NetBSD版本的Almquist shell (ash)发展而来, 于1997年,由赫伯特·许(Herbert Xu)移植到Linux上,于2002年改名为 dash。
————————————————
版权声明:本文为CSDN博主「win-victor」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43887596/article/details/99293505
脚本第一行加入以下代码,强制指定解释器:
#!/bin/bash
这里过了。
又双叒叕出现问题了!? 果然我太菜了
新问题: line 20: syntax error: unexpected end of file
错误详情:
[2021-12-15 16:54:22] /root/workspace@tmp/durable-b802c188/script.sh: line 20: syntax error: unexpected end of file
script returned exit code 2
脚本:
#!/bin/bash
version=`git describe --abbrev=0`
other_version_split='-'
time=`date "+%Y%m%d%H%M%S"`
# 当存在-时,说明并非正式版,在版本最后加入时间戳
if [[$version == *$other_version_split*]]
then
version=`${version}.${time}`
# 设定所有需要被发布的包
packages=('ZeroSum' 'ZeroSum.Application' 'ZeroSum.Cors' 'ZeroSum.Domain' 'ZeroSum.Infrastructure' 'ZeroSum.Mapper' 'ZeroSum.Swagger')
# 开始发布
for package in ${packages[@]}
do
package_name=$package$version
echo package_name
done
这!!!20行都是空的啊,这脚本大概有点不对劲。
不管三七二十一,先删了空行试试。还是一样的问题,从度娘上发现是因为换行的问题,常出现在win系统中,可是。。。我是在web里编辑的啊??
显而易见,当然是行不通的
那尝试另一个方向:语法错误!
那么语法出现错误,就只剩下循环了,先把之前偷懒没有改的地方修复一下:
echo
本来是要输出变量的,但是忘了打$
,后来想着反正是测试的, 就没有管。
还是一样的问题,有点抓瞎了。
峰回路转
早上清醒了一下,重新看了下shell
的流程语句。发现if
的结尾是fi
,这时候回头看一下第二次报的错,其实已经提示我们了:
[2021-12-15 16:42:07] + git describe --abbrev=0
[2021-12-15 16:42:07] + version=1.0.0-alpha
[2021-12-15 16:42:07] + other_version_split=-
[2021-12-15 16:42:07] + date +%Y%m%d%H%M%S
[2021-12-15 16:42:07] + time=20211215084207
[2021-12-15 16:42:07] /root/workspace@tmp/durable-6a4abdd7/script.sh: 11: Syntax error: "(" unexpected (expecting "fi")
script returned exit code 2
但是因为数组定义也有问题,因此干扰了判断(大实话就是没认真看信息:-1:)
最终脚本
#!/bin/bash
version=`git describe --abbrev=0`
other_version_split='-'
time=`date "+%Y%m%d%H%M%S"`
# 当存在-时,说明并非正式版,在版本最后加入时间戳
if [[$version == *$other_version_split*]]
then
version=`${version}.${time}`
fi
# 设定所有需要被发布的包
packages=('ZeroSum' 'ZeroSum.Application' 'ZeroSum.Cors' 'ZeroSum.Domain' 'ZeroSum.Infrastructure' 'ZeroSum.Mapper' 'ZeroSum.Swagger')
# 开始发布
for package in ${packages[@]}
do
package_name=`${package}.${version}`
echo $package_name
done
评论已关闭