shell脚本基本操作

 

概述:

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

相关连接:

https://blog.csdn.net/qq_36119192/article/details/82964713

https://www.cnblogs.com/yinheyi/p/6648242.html

原文地址:https://www.cnblogs.com/chen-xia/p/13916509.html