参考网址:http://www.runoob.com/linux/linux-shell.html
有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n。那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' urfile 。
尽量在linux下编辑文件(vi/vim)
可以用 sh /home/test.sh 来执行test.sh脚本。也可以用 ./test.sh 来执行此脚本
- shell变量:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头.(变量名和等号之间不能有空格)
- 常规命名(和Java一样):Runoob=xxx _var=xxx var2=xxx
- 用语句给变量赋值: for filein`ls /etc` (此语句将 /etc 下目录的文件名循环出来)
- 使用变量名:只要在变量名前面加美元符号即可 echo $Runoob echo ${Runoob}istest
- shell字符串:字符串可以用单引号,也可以用双引号,也可以不用引号
- 单引号: str='this is a string'
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 双引号: str="Hello, I know your are \"$your_name\"! \n"
- 双引号里可以有变量
- 双引号里可以出现转义字符
- 单引号: str='this is a string'
下面是网上找来的一段重启Tomcat的代码:
#!/bin/sh
p='/home/soforway/tomcat-muyitao-api/'
workPath=${p}'work/'
rm -rf ${workPath}
tomcatPath=${p}'bin/'
echo 'operate restart tomcat: '$tomcatPath
pid=`ps aux | grep $p | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo 'exist pid:'$pid
if [ -n "$pid" ]
then
{
echo ===========shutdown================
$tomcatPath'shutdown.sh'
sleep 2
pid=`ps aux | grep $p | grep -v grep | grep -v retomcat | awk '{print $2}'`
if [ -n "$pid" ]
then
{
sleep 2
echo ========kill tomcat begin==============
echo $pid
kill -9 $pid
echo ========kill tomcat end================
}
fi
sleep 2
echo ===========startup.sh==============
$tomcatPath'startup.sh'
}
else
echo ===========startup.sh==============
$tomcatPath'startup.sh'
fi
tail -f ${p}/logs/catalina.out
p='/home/soforway/tomcat-muyitao-api/'
workPath=${p}'work/'
rm -rf ${workPath}
tomcatPath=${p}'bin/'
echo 'operate restart tomcat: '$tomcatPath
pid=`ps aux | grep $p | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo 'exist pid:'$pid
if [ -n "$pid" ]
then
{
echo ===========shutdown================
$tomcatPath'shutdown.sh'
sleep 2
pid=`ps aux | grep $p | grep -v grep | grep -v retomcat | awk '{print $2}'`
if [ -n "$pid" ]
then
{
sleep 2
echo ========kill tomcat begin==============
echo $pid
kill -9 $pid
echo ========kill tomcat end================
}
fi
sleep 2
echo ===========startup.sh==============
$tomcatPath'startup.sh'
}
else
echo ===========startup.sh==============
$tomcatPath'startup.sh'
fi
tail -f ${p}/logs/catalina.out