• linux系列之-—01 shell编程笔记


    一、基础知识点

    1、特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)

    shell编程中有一些特殊的变量可以使用。这些变量在脚本中可以作为全局变量来使用。

    名称 说明
    $0 脚本名称
    $1-9      脚本执行时的参数1到参数9
    $? 脚本的返回值    
    $# 脚本执行时,输入的参数的个数
    $@ 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表
    $* 输入的参数的具体内容(将输入的参数作为一个单词)

    $@与$*的区别:

      $@与$*都可以使用一个变量来来表示所有的参数内容,但这两个变量之间有一些不同之处。

      $@:将输入的参数作为一个列表对象

      $*:将输入的参数作为一个单词

    2、shell中“>”和“>>”的区别

    >:创建

    >>: 追加

    3、整数表达式&文件表达式

    整数表达式

    文件表达式

    4、执行结果赋值给变量【两种方式】

    方法1:【通用方法】 使用Tab键上面的反引号 

    例子如下:

    find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件

    使用反引号 引住命令,然后使用变量接收

    var=` find /apps/swapping -name '*swapping*.jar' `

    打印变量结果

    echo $var

    方法2:使用$(命令)的方式赋值给变量

    示例命令:

    SOURCE_PATH=/apps/Devops/jenkins/workspace
    SERVER_NAME=swapping
    SOURCE_JAR_PATH=$(find "$SOURCE_PATH/$SERVER_NAME/target/"  -name "*$SERVER_NAME*.jar" )
    echo $SOURCE_JAR_PATH

    打印结果:

    5、shell 中的引号,双引号,反引号

    1)、单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会原封不动的使用,唯一需要注意的点是不允许引用自身;

    2)、双引号属于弱引用,它会对一些被引起来的字符进行特殊处理,主要包括以下情况: 

    1:$加变量名可以取变量的值 ,

    2:反引号和$()引起来的字符会被当做命令执行后替换原来的字符,

    3:当需要使用字符($  `  "  )时必须进行转义,也就是在前面加 ; 

    State=`grep "Current state of '$ServerName'" tmp$$ | cut -d ":" -f 3 | sed 's/ //g'`

    grep

    cut ------------先按:分段,-f就是分段后取第几个字段。

    sed------------s表示替换,s/ //g 表示空格替换为空,最后的g标志表示全部替换

    echo '保留3天备份'

    cd $jenkins/backup/

    ls -lrt --time-style="+%Y-%m-%d %H:%M %z" $servername_*.tar.gz | awk '{print $6,$7,$9;}' | while read filename
    do
    mk_date=`echo $filename | awk '{print $1}'`
    mk_filename=`echo $filename | awk '{print $3}'`
    t1=`date -d "3 day ago" +%s`
    t2=`date -d "$mk_date" +%s`
    echo $t1
    echo $t2
    echo '==============:'[ $t1 -gt $t2 ]
    if [ $t1 -gt $t2 ]
    then
    rm $mk_filename
    echo 'REMOVE FILE '$jenkins/backup/$mk_filename
    else
    echo ''
    fi
    done

    根据jar文件名生成本次升级涉及工程列表

     ls -l *.jar|awk '{print $9}'|awk -F '.' '{print $1}'

    6、复制指定目录及子目录下特定类型的文件

    方法一:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成

    ---1.1 删除指定目录下指定文件
    find 要查找的目录名 -name '*.jar' |xargs rm -r
    ---1.2 删除指定名称的文件或文件夹
    find 要查找的目录名 -type d | grep .svn$ | xargs rm -r

    方法二:需要的文件为单一类型,带目录结构复制

      Step1 建立目录test3
      mkdir test3

      Step2 将指定类型文件带目录结构打包
      find test/ -name '*.txt' |xargs tar czf test3.tgz

      Step3 解包到目录test3
      tar zxvf test3.tgz -C test3

    7、字符串截取【八种】方法

    #、## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。

    %、%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符。

    #!bin/bash
    #author:amau
    
    var=http://www.aaa.com/123.htm
    
    s1=${var#*//}
    s2=${var##*/}
    s3=${var%/*}
    s4=${var%%/*}
    
    s5=${var:0:5}
    s6=${var:7}
    s7=${var:0-7:3}
    s8=${var:0-7}
    
    
    echo "关于字符串的截取%,#的使用方法"
    echo "原字符串为:"${var}
    echo "#*//的效果:"${s1}
    echo "##*/的效果:"${s2}
    echo "%/* 的效果:"${s3}
    echo "%%/*的效果:"${s4}
    echo ":0:5的效果:"${s5}
    echo ":7  的效果:"${s6}
    echo ":0-7:3的效果:"${s7}
    echo ":0-7的效果:"${s8}

    参考资料

    50个最常用的Unix/Linux命令

    SVN命令

    参考2

  • 相关阅读:
    Azure SQL Storage
    T-SQL quries
    映射盘符
    繁体及其输入法、乱码问题
    匈牙利命名法
    C++四种转换总结
    windows系统下进程间通信
    Qt 中文字符串问题
    PDB文件详解
    DbgView 无法开启Capture Kernel问题
  • 原文地址:https://www.cnblogs.com/liuyitan/p/9264025.html
Copyright © 2020-2023  润新知