wacsdn 2011-08-12
研究maven有一阵子了,镜像仓库nexus也早已搭建起来,之前在公司是搭建在server上面,所以也不用频繁的去启动nexus。但是现在在家里想要搭建一个nexus,每次开机都要去启动nexus,搞的比较烦,正好在学习linux,所以就用shell写了一个小小的启动脚本,因为是写的第一个shell脚本,所以写下来,以示纪念。
虽然很简单,因为是第一次写,还是费了比较长的时间。
下面就将出错的地方标示出来,以提醒自己吧。
#!/bin/bash
echo"nexusverify.."
testing8081=`(netstat-an|grep8081)`-----这儿是`不是单引号',因为是可执行的脚本,所以必须是`号(就是数字键1左边,Tab键上面那个按键)
if["NULL$testing8081"="NULL"];then-------shell中的相等判断是用“=”而不是“==”,注意在“=”前后要留出空格,我就是在这儿卡了半天
echo"nuxuswillbestarting..."
/home/sdh/maven/Nexus/nexus-oss-webapp-1.9.0.2/bin/jsw/linux-x86-32/nexusstart
else
echo"nexushadstarted.."
fi
附:单引号(')双引号(")及quote(`)的区别
单引号('):我的理解就是强引用了,在单引号中的都被解释为普通的字符
双引号("):应该就是弱引用了,双引号中的内容,如果为变量,则会继续解析变量值的
quote(`):是可执行命令,``中的字符是按可行性命令来解析的
如:
[sdh@localhost~]$name=sdh
[sdh@localhost~]$echo"$name"
sdh----name作为变量来解析
[sdh@localhost~]$echo'$name'
$name----直接将name变量解析为普通字符串
[sdh@localhost~]$echo`ls`-----ls是作为普通的命令来执行的
androidDevandroid_sourcebineclipse.loghs_err_pid10060.loghs_err_pid3807.loghs_err_pid8651.logjavamavenMongoDBseamDevthunderworkspace公共的模板视频图片文档下载音乐桌面
[sdh@localhost~]$
而且一般来说,在一串命令当中,被``修饰的是最先执行的。
再一个就是=的赋值运算,在一般的shell中,如果是作赋值运算,则"="左右不能有空格,如果是做验证判断的话,则必须有空格。
改良版的内容
#!/bin/bash #this is a script foe nexus start,if the nexus is startting,return. echo "nexus verify.." testing8081=`(netstat -an|grep 8081)` if [ "NULL$testing8081" = "NULL" ] ; then echo "nuxus starting..." /home/sdh/maven/Nexus/nexus-oss-webapp-1.9.0.2/bin/jsw/linux-x86-32/nexus start else echo -n "nexus had started,do you need restart it?(Y/N):" read verify if [ "$verify" = "Y" ] ; then /home/sdh/maven/Nexus/nexus-oss-webapp-1.9.0.2/bin/jsw/linux-x86-32/nexus restart echo "nexus restared.." fi fi