shell脚本学习笔记

来源:互联网 发布:vnc远程控制软件linux 编辑:程序博客网 时间:2024/04/29 16:57

#!/bin/bash
# Program
# This program shows "Hello World"

#v1是一个String类型,“=”左右两边不能加上空格。否则将视为命令执行。
v1=centos
echo $v1

#v2也是一个String类型,如果这个String类型有空格,需要用引号
v2="this is a shell"
echo $v2

v3=10
v4=20
echo $v3
echo $v4


# 输出: 10+20
v5=$v3+$v4
echo $v5

# 加减乘除的运算需要加上 $(( ))
# 输出:30
echo $(($v3+$v4))
# 输出:140
echo $((100-20+30*2))

# 计算v2这个字符串的长度,输出:15
echo ${#v2}

# 截取出从第2个字符后的所有字符,输出:is is a shell
echo ${v2:2}


# 从第2个字符后开始截取,截取出7个字符的长度.输出:is is a
echo ${v2:2:7}

str="I love you"
# 删除开始的字符串。输出:you
echo ${str#I love}

str2="I like apple,I like apple"
# 从开头删除最短匹配子串,输出:e apple,I like apple
echo ${str2#I*k}

# 从开头删除最长匹配子串,输出:e apple
echo ${str2##I*k}

# 从结尾删除最短匹配子串,输出:I like apple,I like
echo ${str2%a*e}

# 从结尾删除最长匹配子串,输出:I like
echo ${str2%%a*e}

------------------------------------------------------------------

if [ "$1" == 'ALL' ] || [ "$1" == 'B' ];then
 echo "B"
fi

if [ "$1" == 'ALL' ] || [ "$1" == 'C' ];then
 echo "C"
fi

------------------------------------------------------------------

filename=/data/myshell
# 判断文件是否存在,如果存在,输出'exist',如果不存在,输出'not exist'
test -f $filename && echo 'exist' || echo 'not exist'
# 判断目录是否存在
test -d $filename && echo 'exist' || echo 'not exist'
# 判断文件是否有读权限
test -r $filename && echo 'exist' || echo 'not exist'
# 判断文件是否有写权限
test -w $filename && echo 'exist' || echo 'not exist'
# 判断文件是否有执行权限
test -x $filename && echo 'exist' || echo 'not exist'

## []判断注意
# 1、在中括号中必须都要使用空格来分隔
# 2、在中括号中的变量,最好都以双引号括起来
# 3、在中括号中的常数,最好都以单引号括起来
# 例如:
a=1
# 注意:下面将[ "$a" == '1' ]改成["$a"=='1']会报错
[ "$a" == '1' ] && echo 'Yes' || echo 'No'
[ "$a" == '2' ] && echo 'Yes' || echo 'No'
[ "$a" != '2' ] && echo 'Yes' || echo 'No'

## 条件判断
# 单分支判断
# if[];then
#       echo statement
# fi

# []表示判断,test也表示判断
# 采用[]的形式
if [ -f $filename ];then
        echo 'The file is exist'
fi

# 采用test的形式
if test -f $filename;then
         echo 'The file is exist'
fi

# 双分支判断
# if[];then
#       echo statement
# else
#       echo statement
# fi

# 多分支判断
# if[];then
#       echo statement
# elif
#       echo statement
# elif
#       echo statement
# elif
#       echo statement
# fi

 

----------------------------------------------------------------------

 

echo 'Please input an subject.'
read subject
case $subject in
java)
  echo "Your subject name is $subject, subject id is 1";;
c++)
  echo "Your subject name is $subject, subject id is 2";;
scala)
  echo "Your subject name is $subject, subject id is 3";;
*)
  echo "I dont know what you input";;
esac

 

-------------------------------------------------------------------------

 

function print() {
  echo "Your input is $1"
}

echo "This program will print your selection!"

case $1 in
"one")
  print 1;;
"two")
  print 2;;
"three")
  print 3;;
*)
  "Usage $0 {one|two|three}";;
esac

 

---------------------------------------------------------------------------

 

echo 'Please input your number.'
read number
if [ $number == 1 ];then
        echo 'Your input number is 1.'
elif [ $number == 2 ];then
        echo 'Your input number is 2.'
elif [ $number == 3 ];then
        echo 'Your input number is 3.'
else
        echo 'I dont know what your input.'
fi

 

----------------------------------------------------------------------------

 

echo 'Please input your hardware'
read hd
if [ "$hd" == 'cpu' ];then
        echo 'Your cpu info is '
        cat /proc/cpuinfo
elif [ "$hd" == 'mem' ];then
        echo 'Your memory info is '
        cat /proc/meminfo
elif [ "$hd" == 'hard' ];then
        echo 'Your harddisk info is '
        df -h
else
        echo 'I dont know what you input.'
fi

 

--------------------------------------------------------------

 

echo "Please input a number"
read number
for((i=1;i<=$number;i++));do
  echo $i
done;

 

--------------------------------------------------------------

 

#!/bin/bash
# []   -eq -ne -gt -ge -lt -le
# (()) ==  !=  >   >=  <   <=
#推荐使用中括号

i=10

# while(($i>=5));do
while [ $i -ge 5 ];do
        echo $i;
        ((i--));
done;

-----------------------------------------------------------------

 

if [ $# -ne 2 ]; then
  echo "Not enough parameters"
  exit 0
fi

if [ $1 -eq $2 ]; then
  echo "$1 equals $2"
elif [ $1 -lt $2 ]; then
  echo "$1 litter than $2"
elif [ $1 -gt $2 ]; then
  echo "$1 greater than $2"
fi

------------------------------------------------------------------

# $0表示脚本文件的名称
echo $0
# $1表示第一个参数
echo $1
# $*这个程序的所有参数
echo $*
# $#这个程序的参数个数
echo $#
# $$这个程序的PID
echo $$
# $! 执行上一个后台命令的PID
echo $!
# $? 执行上一个命令的返回值.如果为0表示命令执行成功,非0表示执行失败。
echo $?

 

----------------------------------------------------------------

 

a=10
b=20
c=30
value1=`expr $a + $b + $c`
echo $value1
value2=$(($a+$b+$c))
echo $value2

value4=`expr $c / $b`
echo $value4

# 乘号*前面需要加上转义字符\
value5=`expr $c \* $b`
echo $value5

 

-------------------------------------------------------------------

 

for DAY in Sunday Monday Tuesday Wednesday Thursday Friday Saturday
do
  echo "The day is: $DAY"
done

 

----------------------------------------------------------------------

 

crontab -e 定时任务执行:


#####以下是关于“烟草贷”##############

##每月第一天的凌晨1点更新烟草袋的价格总表
0 1 1 * * /bin/bash /data/work/ycd/bin/ycd_import_price.sh

##每月第二天的凌晨1点运行烟草贷的月报
0 1 2 * * /bin/bash /data/work/ycd/bin/ycd_offline.sh

##每周星期一的凌晨2点运行烟草贷预警(暂时不用)
##0 2 * * 1 /bin/bash /data/work/ycd/bin/ycd_offline_warn.sh

########## “烟草贷”结束 ###########

 

0 0
原创粉丝点击