dyllen

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近换到linux,装了xampp,想来启动xampp每次都输入命令着实有点太麻烦啊!是不。想着写点东西来,简化一下。

想到了bash,马上对着搜来的教程就写上了,虽说很短,实在也费了咱点时间。由于受到其他高级编程语言语法的影响,bash也有类似的语法,作用是一样的,但这这语法看起来实在有点别扭了。

入正题,两种方法,上代码:

首先是if的

 1 #!/bin/bash
 2 echo "你想干嘛?"
 3 pass="××××"
 4 select var in "启动Apache" "重启Apache" "停止Apache" "目前状态";do
 5     break;
 6 done
 7 if [ "$var" = "启动Apache" ]; then
 8     echo $pass | sudo -S /opt/lampp/lampp start;
 9 elif [ "$var" = "重启Apache" ]; then
10     echo $pass | sudo -S /opt/lampp/lampp restart;
11 elif [ "$var" = "停止Apache" ]; then
12     echo $pass | sudo -S /opt/lampp/lampp stop;
13 elif [ "$var" = "目前状态" ];then
14     echo $pass | sudo -S /opt/lampp/lampp status;
15 fi

 

刚开始时,最后一行报错:“语法错误: 未预期的文件结尾”,搞半天。因为我看的是ubnuntu的wiki上的文章,上面有个错误,else if应该是elif,害得我搞了好久都不知道那里错了,一遍一边对语法,都没看出问题,最后发现是它的那篇教程错了。

 

第二种就是把上面的if判断改成case了,这里的case和其他语言的switch……case……可有点不一样啊。这里也搞了我半天。

 1 #!/bin/bash
 2 echo "你想干嘛?"
 3 pass="×××××"
 4 select var in "启动Apache" "重启Apache" "停止Apache" "目前状态";do
 5     break;
 6 done
 7 case "$var" in
 8 "启动"*)
 9 echo $pass | sudo -S /opt/lampp/lampp start;;
10 
11 "重启"*)
12 echo $pass | sudo -S /opt/lampp/lampp restart;;
13 
14 "停止"*)
15 echo $pass | sudo -S /opt/lampp/lampp stop;;
16 
17 "目前"*)
18 echo $pass | sudo -S /opt/lampp/lampp status;;
19 
20 esac

 

我就写了上面两种,其他方法没去想了,不搞那么复杂。pass变量是你的密码。

里面的”|“是管道,不能换成”;“,否则密码会直接输出到屏幕,而且还会再次要求你输入密码,以执行sudo命令。

用if判断的话不能用*通配符。

OK就这样,往桌面上一放,比每次输命令方便多了。

posted on 2013-02-01 22:21  dyllen  阅读(3062)  评论(0编辑  收藏  举报