最近换到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就这样,往桌面上一放,比每次输命令方便多了。