Ubuntu环境下shell脚本自动化编译Go代码不执行如何解决?
问题原因
你当前编写的脚本中仅使用了echo命令,该命令的作用仅为将后续的字符串内容输出到终端,并不会实际执行字符串对应的编译指令,因此只会打印命令而无编译效果。
解决方法
根据你的使用需求可选择以下任意一种修改方案:
方案1:直接执行编译(无命令打印)
移除脚本中的echo关键字,直接写编译指令即可,修改后脚本内容如下:
for i in *.go do go build -o "${i%.*}" "$i" done
方案2:执行编译同时打印命令
如果需要保留命令打印的效果方便排查执行过程,可以选择以下两种写法:
- 写法A:保留打印逻辑,额外新增一行执行命令
for i in *.go do echo "go build -o ${i%.*} $i" go build -o "${i%.*}" "$i" done
- 写法B:开启Shell调试模式,自动打印执行的命令
在脚本开头增加set -x配置,Shell会自动输出所有执行的指令内容:
#!/bin/bash set -x for i in *.go do go build -o "${i%.*}" "$i" done
补充注意事项
- 建议在脚本首行添加
#!/bin/bash指定Shell解释器,避免不同环境下解释器兼容问题 - 运行脚本前需确保脚本有执行权限,可执行
chmod +x c.sh添加权限 - 上述脚本中变量外层增加了双引号,可避免文件名包含空格等特殊字符时执行出错
内容的提问来源于stack exchange,提问作者Anzo Sasuke
相关产品推荐
相关产品推荐

