day 43 셸 프로 그래 밍 기초

3436 단어
1. 스 크 립 트 형식
#!/bin/bash    //#! 幻数 指定脚本用的命令解释器
#加脚本内容
执行脚本的方法:
    sh
    sh -x

2. 변수
정의 ip = 10..0.201 편의 스 크 립 트 에서 중복 사용 하기 시작 합 니 다.
1) 명명 규칙
변수 이름 식별 변수 역할 을 볼 때 숫자 로 시작 할 수 없습니다. 2) 따옴표
单引号:所见即所得
双引号:可以解析特殊符号  如:`` $()  $  !
不加引号:与双引号类似  支持通配符  *  {} ? []   [^]
反引号:优先执行 引号里面为命令

변 수 를 정의 할 때 변수 에 빈 칸 이 있 으 면 따옴표 를 사용 해 야 합 니 다.
3) 변수 분류 (1) 부분 변수 (일반 변수)
    IP=10.0.0.200
    time=2019-5-30
    取变量内容
        echo $weekday    echo ${week}day

예 1: 부분 변수 정의 와 사용:
[root@m01 scripts]# date=7
[root@m01 scripts]# echo $dateday

[root@m01 scripts]# echo $(date)day
Thu May 30 09:01:11 CST 2019day
[root@m01 scripts]# echo ${date}day
7day

(2) 전역 변수 (환경 변수)
  • 특징
    시스템 생 성
  • 상용
  •     PATH
        PS1
        LANG
    
  • 창설
    export 에 정 의 된 변 수 를 추가 합 니 다.
  • 취소 변수 (삭제)
    unset + 변수 이름

  • (3) 부분 변수 VS 전역 변수 source (4) 특수 변수
        $?
            上一条命令的返回值
            0 正确
            非0 有问题
        $数字
            $1  $3
            $0
        $#
            命令行参数的个数
            判断参数的个数
        $*
            脚本的所有参数
    

    예 2: $1 $2 $3 $0 의 용법:
    [root@m01 scripts]# cat show.sh 
    #!/bin/bash
    
    echo $1 $2 $3 $0
    [root@m01 scripts]# echo show.sh  oldboy lidao oldgirl alex
    show.sh oldboy lidao oldgirl alex
    

    예 3: 변수의 응용
    [root@m01 /server/scripts]# x=10
    [root@m01 /server/scripts]# y=99
    [root@m01 /server/scripts]# awk  'BEGIN{print $x/$y}'
    awk: cmd. line:1: fatal: division by zero attempted
    [root@m01 /server/scripts]# awk  'BEGIN{print x,y}'
     
    [root@m01 /server/scripts]# awk -vn1=10 -vn2=99  'BEGIN{print n1/n2}'
    0.10101
    [root@m01 /server/scripts]# awk -vn1=$x -vn2=$y  'BEGIN{print n1/n2}'
    0.10101
    

    3. 판단
    (1) 특수 기호
            &&  前一个命令执行成功 执行后面的命令
            ||  前一个命令没有执行成功 执行后面的命令
    

    (2) [] 조건 식
    괄호 안에 두 개의 빈 칸
            文件目录
                [ -d /tmp/old ]
                    判断目录是否存在
                -f  文件
            比大小
                单词
                -eq   ==
                    equal  等于
                -ne   !=
                    not equal 不等于
                -gt    >
                    great than
                -ge    >=
                    great equal
                -lt     <
                    less than 小于
                -le     <=
                    less equal 
    

    (3) if 조건 판단 단순 형식
    예 4: if 조건문:
    [root@m01 scripts]# cat cal_v1.sh
    #!/bin/bash
    
    x=$1
    y=$2
    
    if [ $# -lt 2 ];then
      echo "Usage: sh $0 num1 num2"
    
      else
       awk -vn1=$x -vn2=$y  'BEGIN{print n1+n2}'
       awk -vn1=$x -vn2=$y  'BEGIN{print n1-n2}'
       awk -vn1=$x -vn2=$y  'BEGIN{print n1*n2}'
       awk -vn1=$x -vn2=$y  'BEGIN{print n1/n2}'
    fi
    [root@m01 scripts]# sh cal_v1.sh 3
    Usage: sh cal_v1.sh num1 num2
    [root@m01 scripts]# sh cal_v1.sh 3 4
    7
    -1
    12
    0.75
    

    (4) for circle
    (5) 생산 사례: 정시 작업 의 실행 여 부 를 판단 해 야 합 니 다. 예: 정시 작업 의 실행 여 부 를 확인 합 니 다.
    [root@m01 scripts]# cat cron.sh 
    #!/bin/bash
    
    count=$(ps -ef |grep -c crond )
    
    if [ $count -ge 2 ];then
       echo 'crond running'
    else
       echo 'crond stop'
    fi
    [root@m01 scripts]# systemctl stop crond
    [root@m01 scripts]# sh cron.sh
    crond stop
    [root@m01 scripts]# systemctl start crond
    [root@m01 scripts]# sh cron.sh
    crond running
    

    좋은 웹페이지 즐겨찾기