• shell编程基础


    1.1 shell编程基础

    1.1.1 Shell编程所需的基础知识

    熟练使用vim编辑器

    熟悉SSH终端

    熟练掌握linux常用命令

    数量掌握linux正则表达式及三剑客命令(grep、sed、awk)

    /etc/init.d/functions

    1.1.2 变量分类

    用一个固定的字符串,替代更多更复制的内容

    局部变量(普通变量):

    必须以字母或下划线开头  字母、数字、下划线组成

    规范的变量名写法定义:见名知意

    驼峰语法:首个单词字母小写,其余单词字母大写 oldboyAgeSex=1

    [root@oldboy files]# week=6

    [root@oldboy files]# echo $week

    6

     全局变量(环境变量):

    大写,linux里面哪里都可以用

    在创建他们的Shell及其派出来的子Shell中使用

     

    与用户环境变量有关的文件  目录

    全局环境变配置文件

    /etc/profile     /etc/bashrc      /etc/profile.d用户登录到系统 会运行这个目录下面的脚本 以.sh结尾

    用户环境变量配置文件

    ~/,bash_profile       ~/.bashrc      

    特殊变量:

    $   数字

    $0  脚本名字

    $1  命令行脚本的第1个参数 

    $2  命令行脚本的第2个参数 

    $3  命令行脚本的第3个参数 

    $4  命令行脚本的第4个参数 

    $#  脚本的参数的数量

    $?  上一个命令的执行结果  0正确  非0错误       

     

    #!bin/bash

    a=$1

    b=$2

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}'

    [root@oldboy files]# sh num.sh 10 20

    30

    -10

    200

    0.5

    1.1.1 Shell编程所需的基础知识

    熟练使用vim编辑器

    熟悉SSH终端

    熟练掌握linux常用命令

    数量掌握linux正则表达式及三剑客命令(grep、sed、awk)

    /etc/init.d/functions

    1.1.2 变量分类

    用一个固定的字符串,替代更多更复制的内容

    局部变量(普通变量):

    必须以字母或下划线开头  字母、数字、下划线组成

    规范的变量名写法定义:见名知意

    驼峰语法:首个单词字母小写,其余单词字母大写 oldboyAgeSex=1

    [root@oldboy files]# week=6

    [root@oldboy files]# echo $week

    6

    全局变量(环境变量):

    大写,linux里面哪里都可以用

    在创建他们的Shell及其派出来的子Shell中使用

     

    与用户环境变量有关的文件  目录

    全局环境变配置文件

    /etc/profile     /etc/bashrc      /etc/profile.d用户登录到系统 会运行这个目录下面的脚本 以.sh结尾

    用户环境变量配置文件

    ~/,bash_profile       ~/.bashrc      

    特殊变量:

    $   数字

    $0  脚本名字

    $1  命令行脚本的第1个参数 

    $2  命令行脚本的第2个参数 

    $3  命令行脚本的第3个参数 

    $4  命令行脚本的第4个参数 

    $#  脚本的参数的数量

    $?  上一个命令的执行结果  0正确  非0错误       

     

    #!bin/bash

    a=$1

    b=$2

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}'

    [root@oldboy files]# sh num.sh 10 20

    30

    -10

    200

    0.5

    1.1 shell条件表达式

    判断 /oldboy 目录是否存在  如果存在  显示   dir exist

    [root@oldboy /]# ls -d /oldboy/ && echo dir exist

    /oldboy/

    dir exist

     

    条件表达式:   -d 目录是否存在  -f 文件是否存在

    [root@oldboy /]# [ -d /oldboy ]

    [root@oldboy /]# echo $?

    0

    [root@oldboy /]# [  -f /etc/hostsa ]|| touch /etc/hostsa

    [root@oldboy /]# ll /etc/hostsa

    -rw-r--r--. 1 root oldboy 0 Jun  2 17:09 /etc/hostsa

    [ 1 -eq 1 ]

    -eq          equal            ==

    -ne          not equal        !=

    -gt          great than       >

    -ge          great equal      >=

    -lt          less  than       <

    -le          less  equal      !<

    1.2 if语句

    #单分支的判断

    if [ 如果你是高富帅 ];then

        你可以迎娶白富美 灰姑娘 ... 随便挑选

    fi

    [root@oldboy scripts]# cat cal.sh

    #!/bin/bash

    a=$1

    b=$2

    if [ $# -ne 2 ];then

       echo "Usage $0 num1 num2"

       exit

    fi

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    #双分支的判断

    if [ 如果你是高富帅 ];then

        你可以迎娶白富美 灰姑娘 ... 随便挑选

    else

        只要是个女的就行

    fi

    #输入两个数字

    #比较两个数字的大小

    # a >   b  显示 a bigger than b

    #a  <=  b  显示 a  less equal b

    #if [第1个数字 大于 第2个数字 ];then

    #显示 $oldboy  > $lidao

    #否则

    #显示 $oldboy <= $lidao

    #fi

    [root@oldboy scripts]# cat  compare.sh

    #!/bin/bash

    oldboy=$1

    lidao=$2

    if [ $# -ne 2 ];then

       echo "Usage:$0 num1 num2:"

       exit

    fi

    if [ $oldboy -gt $lidao ];then

       echo "$oldboy bigger than $lidao"

    else

       echo "$oldboy less equal $lidao"

    fi

    1.3 read交互模式

    [root@oldboy scripts]# read -t 5 -p "input password:" a b    -t停留时间 –p显示input password

    input password:10 20                                                     –s不显示内容

    [root@oldboy scripts]# echo $a $b

    10 20

    [root@oldboy files]# cat a.sh

    #!/bin/bash

    read -p "输入内容: " a b

    if [ $a -gt $b ];then

        echo "$a > $b"

    elif [ $a -eq $b ];then  

        echo "$a = $b"

    else

        echo "$a < $b"

    fi

    [root@oldboy files]# sh a.sh

    输入内容: 20 10

    20 > 10

    [root@oldboy files]# sh a.sh

    输入内容: 20 20

    20 = 20

    [root@oldboy files]# sh a.sh

    输入内容: 10 20

    10 < 20

    1.4  for循环

    for    in    do    done

    [root@oldboy files]# for  lidao  in  3 2 1 6 5 4   

    > do

    >      echo $lidao

    > done

    3

    2

    1

    6

    5

    4

    [root@oldboy files]# for n in {01..7}; do echo zhao,${n}week ${n}group take you to 大保健,find ${n}woman.; done

    zhao,01week 01group take you to 大保健,find 01woman.

    zhao,02week 02group take you to 大保健,find 02woman.

    zhao,03week 03group take you to 大保健,find 03woman.

    zhao,04week 04group take you to 大保健,find 04woman.

    zhao,05week 05group take you to 大保健,find 05woman.

    zhao,06week 06group take you to 大保健,find 06woman.

    zhao,07week 07group take you to 大保健,find 07woman.

    优化linux开机启动项目,只保留crond rsyslog sshd network sysstat 其他都关闭

    [root@oldboy files]# for n in `chkconfig|awk '!/crond|sshd|network|rsyslog|sysstat/{print $1}'`;do chkconfig $n off ;done

    [root@oldboy files]# chkconfig |sed -nr '/crond|sshd|network|rsyslog|sysstat/p'

    crond          0:off   1:off   2:on    3:on    4:on    5:on    6:off

    network        0:off   1:off   2:on    3:on    4:on    5:on    6:off

    rsyslog        0:off   1:off   2:on    3:on    4:on    5:on    6:off

    sshd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

    sysstat        0:off   1:on    2:on    3:on    4:on    5:on    6:off

  • 相关阅读:
    【Swift】WKWebView与JS的交互使用
    【React Native】进阶指南之二(手势响应系统)
    【React Native】进阶指南之一(特定平台、图片加载、动画使用)
    React Native适配IPhoneX系列设备之<SafeAreaView />
    【React Native】react-native之集成支付宝支付、微信支付
    【React Natvie】React-native-swiper的安装和配置【ES6】
    React Native之React Navigation踩坑
    遭遇裁员,如何渡过心理危机?
    Spring 核心技术与产品理念剖析【下】
    Spring 核心技术与产品理念剖析【上】
  • 原文地址:https://www.cnblogs.com/jazzxs/p/9175223.html
Copyright © 2020-2023  润新知