本帖最后由 hacker85 于 2014-8-11 09:47 编辑
回复 2# DAIC
您可能没有理解清楚我的问题,或者是我没有描述清楚,这里我将具体的内容放上来,还请再次指正。- #!/bin/bash
- ##################################################
- # This is shell on my PC-Home.Update lwqq and more
- ##################################################
-
- str1="当前分支 dev 是最新的。"
- str2="当前分支 master 是最新的。"
-
- cd /opt/lwqq/
-
- echo "123456789" | sudo -S git pull --rebase > /tmp/ls.txt
-
- function ChaXun()
- {
- awk -F: '{print $1}' /tmp/ls.txt | while read line;do
- if [ "$line" = "$str1" ]; then
- echo "0"
- return 0
- fi
- done
- return 1;
- }
-
- result=$(ChaXun)
- if [ -n "$result" ]; then
- sudo rm -rf /build > /dev/null
- sudo mkdir /build > /dev/null
- cd build/
- sudo cmake .. &> /dev/null
- sudo make > /dev/null
- sudo make install > /dev/null
- fi
-
- function Start()
- {
- ps cax | grep $1 > /dev/null
- if [ $? -ne 0 ]; then
- $2 $1 &
- fi
- }
- sudo rm /tmp/ls.txt
- cd
- Start pidgin
- Start openfetion sudo
复制代码 上方的内容实现了这样的功能——进入lwqq目录,自动传递密码,更新代码文件夹,如果返回结果为str1或者是str2则不需要更新,也不需要再重新编译,如若不然则执行删除build目录操作,并新建之,再重新编译。
有趣的地方在于,使用了两个自定义函数,模块化的结构很明显,可是我只会一次处理一个路径,而我最想处理的效果是——一次自动循环处理N个路径中的代码,并自动根据更新命令后的返回结果来判断是需要重新编译还是不需要,其它的路径为:
cd /opt/pidgin-lwqq/ ------返回结果为str1的内容则不需要重新编译,否则需要进一步的操作,具体内容与lwqq的要求一样
cd /opt/kwplayer-packages/ ------返回结果为str2的内容则不需要重新编译,否则需要进一步的操作,具体内容为sudo gdebi *.deb,交自动传递参数Y表示同意安装。
cd /opt/bypy/ ------返回结果为str2的内容则不需要重新编译,否则需要进一步的操作,具体内容为“提示:软件已更新”,只要终端显示这样一句话就可以了。
cd /opt/bcloud-packages/ ------返回结果为str2的内容则不需要重新编译,否则需要进一步的操作,具体内容为sudo gdebi *.deb,交自动传递参数Y表示同意安装。
cd /opt/lixian-xunlei/ ------返回结果为str2的内容则不需要重新编译,否则需要进一步的操作,具体内容为“提示:软件已更新”,只要终端显示这样一句话就可以了。
我上面的描述够详细了,请再次帮忙规划。 |