标题有点绕,其实就是两个脚本,一个是在windows上用来启动cygwin的脚本,另一个是在cygwin中执行某些功能的脚本,然后把它们两个连起来。
由于考虑到功能的自动化,所以想编写一个脚本来将使用交叉编译器编译源代码的过程串起来(https://mp.csdn.net/mp_blog/creation/editor/119726152),自动执行。
1.首先编写shell脚本,供cygwin来调用,其中放入了编译源代码的全过程命令,包括autoscan、aclocal等,和上文中一致,脚本写好之后,直接在cygwin控制台中输入./name.sh运行一下脚本试试,成功了再进行下一步
顺便学了一波命令:
rm 删除文件或文件夹,参数-r 表示递归删除子文件夹中的内容,-f表示强制删除,所以参数这么写:rm -rf 文件夹名称
cp 复制文件或文件夹,cp -r path1 path2 表示把path1复制到path2下,如果"path1"换成"path1/."就是把path1下的文件复制过去,不包括path1这个文件夹
mv 修改文件名
cat > filename << exit 这个指令很棒,完美契合了我需要打开文件并修改其内容的要求,执行指令后会打开文件并进入编辑模式,后续的输入内容直接作为数据写入文件中,然后输入exit表示结束,这样就可以在脚本里实现文件创建及内容编写了,ps:(cat > 表示覆盖从头开始写,cat >> 表示追加在尾部)chmod a+x 文件名 添加可执行权限
2.接下来就是如何在windows下启动cygwin并让它来调用这个脚本,查了一下资料,直接在cmd控制台里头使用命令:(前提是bash已经添加了环境变量)
bash --login
这样之后,就相当于在cmd中进入了cygwin的环境,接下来可以直接运行第一步的脚本,然而,照这样写到.bat脚本文件中,运行之后发现并不行,它只能运行到bash语句,之后的语句完全不执行了
可以有两种方法,使得一连串的语句自动执行:
第一种是,在.bashrc文件末尾,添加你要执行的指令,这样,在cmd调用bash之后,会自动执行这些指令,可以达到效果,但我不喜欢,这样可太怪了,以后要改变的话就得去修改.bashrc文件,这太蠢了;
第二种是,在cmd执行bash命令的时候,同时告诉他你想做的事,可以是一条指令,也可以是一个文件,但执行一条指令太有限了,很多事情没法做,那么只能是一个文件了,一个脚本文件,里面包含了切换目录,执行第一步的脚本文件等我想要写的命令,然后在cmd中执行:bash --login -c "filename"
filename就是第二个脚本文件咯
所以最终就是这样,一个编译源码的脚本,一个调用该脚本的脚本,其中的内容基本长这样:
cd 某个目录
./build.sh
exit
exit用于自动关闭控制台,根据你的需要来调整吧
于是windows上的.bat只有一句话:bash --login -i -c "test.sh"
这样,就基本完成了整个流程的串联