编写脚本时,经常会在脚本中添加路径,比如编译一个特定目录的C文件,这时候不要直接将 自己的文件路径添加到脚本中,因为不同机器在运行时对应的路径可能存在差别,导致整个 脚本运行失败。
正确的方法是用变量来定义路径,并把绝对路径替换成相对路径。
当需要使用交叉工具链时,应该先从Ubuntu的launchpad或者Linaro官网上找,不要使用 百度云中的工具链资源,因为百度云中的资源可能有后门漏洞,无法确保安全性。使用交叉 工具链应该在脚本中依次:下载->解压->配置环境->使用。这样做在仓库中只有我们写的 脚本代码,不存在编译器的tar包,提高工作效率。
TODO
没啥好说的。 Python2 已经死了。
在脚本中尽量不要改变用户的环境配置,例如.bashrc、/etc/profile等,因为可能产生意 想不到的问题出现。建议使用export单独修改当前环境,脚本运行完成后对环境不产生其他 影响,雁过不留痕。
幂等指的就是一个操作多次重复产生的效果都是相同的,在脚本中许多情况下都需要注意将 操作修改成幂等的。例如,用脚本建立一个文件夹 mkdir test ,当第二次运行脚本时就会 出现已经有`test`这个文件夹无法生成的问题,所以对环境有副作用的操作需要考虑操作是 不是幂等的。
正确操作示例:
DIR=test # 1. 等号赋值两边不能有空格 2. 命令与选项之间需要空格 if [ -e ${DIR} ] then echo ${DIR} exist else mkdir test fi
第一是战术层面的【写个 for 循环】:重复性的工作,上面的重复性的工作,是不是可以写一个 for 循环来做?
1. 简单的方法是,在你的电脑上,只用一个 terminal 来一步一步完成所有的工作。 1. 然后用 history 命令看到整个命令序列,复制粘贴到一个 editor 中。 1. 写一个 while true; do [...你的命令行历史]; sleep 500; done 的循环 1. 找个新目录,或者新的虚拟机来测试验证下,看看是否OK。 1. 根据错误提示,思考,修改,try harder
这个方法就是经典笑话【将大象装进冰箱需要几步?(答案是3步:打开冰箱门;塞进大象;关上冰箱门】
而你现在做的事情是 【 确定哪些仓库和分支需要编译和测评,clone 下来编译一边确保配置没错误了; 写个循环♻️不停的 pull - build/compile - run tests - upload results/log; (不用关上冰箱门)】 根据这个思想,重新看自己的命令行历史,看看
1. 哪些应该在循环之内,哪些应该在之外执行? 1. 是否漏掉了一些环境变量或者前提条件?