概述:
Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。
当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本
查看tomcat进程并杀掉进程
#!/bin/bash echo "开始查询tomcat运行的进程编号,查出将其kill" dsp_admin_id=`ps -ef|grep tomcat|grep -v "grep" | awk '{print $2}'` echo $dsp_admin_id for id in $dsp_admin_id do kill -9 $id echo "killed $id" done
命令行:
#####查找tomcat进程($2表示下标,可以为其他)
ps -ef | grep tomcat | grep -v grep | awk '{print $2}'
#####查找tomcat进程并杀死
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9
分支判断
#int类型_变量大小判断 a=10 b=20 if [ $a == $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi #字符串判断(adc可以为变量) if [ -n 'abc' ];then echo "字符串长度大于0" elif [ -z 'abc' ];then echo "字符串长度为0" elif [ 'abc' = 'abc' ];then echo "两个字符串相等" elif [ 'abc' != 'abc' ];then echo "两个字符串不相等" fi #____多条件判断____________ a=20 b="dalan_123" #统计字符串长度 echo ${#b} if (( $a > 10 && ${#b} > 20 ));then echo "两个条件同时满足" elif (( $a > 10 || ${#b} > 20 ));then echo "满足一个就执行" else echo "条件不满足" fi #if嵌套 aa=100 if [ $aa -gt 50 ];then echo "$aa 大于50" if (( $aa % 2 == 0 ));then #两种操作方式 echo "$(($aa+120))" echo "$[$aa+120]" echo "$aa %2= $[$aa%2]" fi else echo "$aa 不小于50" fi #从键盘接收数据判并判断 read age if (( $age <= 2 )); then echo "婴儿" elif (( $age >= 3 && $age <= 8 )); then echo "幼儿" elif (( $age >= 9 && $age <= 17 )); then echo "少年" elif (( $age >= 18 && $age <=25 )); then echo "成年" elif (( $age >= 26 && $age <= 40 )); then echo "青年" elif (( $age >= 41 && $age <= 60 )); then echo "中年" else echo "老年" fi #文件比较 if [ -e test.html ];then echo "test.html存在" elif [ -d test.html ];then echo "test.html是目录" elif [ -f test.html ];then echo "test.html存在,并且是一个普通文件" elif [ -c test.txt ];then echo "文件存在特殊字符" elif [ -n test.txt ];then echo "文件为空" else echo "不知道,拜拜" fi
字符串操作
#!/bin/bash #字符串拼接(连接、合并) name="Shell" url="http://c.biancheng.net/shell/" str1=$name$url #中间不能有空格 str2="$name $url" #如果被双引号包围,那么中间可以有空格 str3=$name": "$url #中间可以出现别的字符串 str4="$name: $url" #这样写也可以 str5="${name}Script: ${url}index.html" #这个时候需要给变量名加上大括号 echo $str1 echo $str2 echo $str3 echo $str4 echo $str5 #统计字符串长度 echo ${#url} #字符串截取 url="www.biancheng://wei.net" #截取3到7位字符串 echo ${url:3:7} #截取第5位后的字符串 echo ${url:5} #休眠5秒(强等待) sleep 5s #截取':'后的数据 echo ${url#*:}
循环
#!/bin/bash #___________while循环__________________ read -p "从键盘接收数据:" snum read -p "从键盘接收数据: " enum #while循环 while [[ $snum -le $enum ]];do echo "当前为 $snum" ((snum++)) done echo "执行完成" #死循环 while true do echo "Welcome to Yiibai" done #从1叠加到100的总和 i=1 sum=0 while((i <= 100)) do #echo $i sum=$[sum+i] let i++ done echo $sum #__________for循环___________________ sum=0 for ((i=1; i<=100; i++)) do #循环体 ((sum += i)) done echo "总和为 $sum" #通过in来循环 sum=0 for n in 1 2 3 4 5 6 do echo $n ((sum+=n)) done echo "The sum is "$sum #循环和判断 sum=0 for ((i=1; i<=50; i++)) do if (( $i % 2 == 0 ));then echo $i fi ((sum += i)) done echo "总和为 $sum"
其他
#!/bin/bash #判断运行python进程是否大于1 if [ $(ps -ef|grep -c "python3") -gt 1 ] then echo "true" fi #列出当前运行的进程数量 aa=$(ps -ef|grep -c "tomcat") echo "$aa" #列出tomcat在运行的进程信息 aa=$(ps -ef|grep "tomcat") echo "$aa" #两种打印打球路径的方法 echo $(cd $(dirname $0); pwd) echo $path `pwd`
shell内调用python脚本
#!/bin/bash a=$(grep -c "验证通过" /home/work/test/index.html) b=20 if [ $a -gt $b ] then echo "$a 条件通过" else echo "条件不通过" #打印当前所在目录 echo $path `pwd` #执行python脚本(不带函数的) python pppp.py fi #!/bin/bash a=$(grep -c "验证通过" /home/work/test/index.html) echo "$a" b=20 if [ $a -gt $b ] then echo "$a 条件通过" else echo "条件不通过" cd /home/work echo $path `pwd` #调用函数(带参数) checkresult=`python -c 'import ppp; print ppp.wei("chenwei_zai_dalan")'` echo $checkresult fi
相关连接: