Shell脚本

1. 基本的几个变量

  • 使用$?获取最近一次的执行结果;
  • 使用$#获取传递的参数个数,类似C语言中的int argc;
  • 使用$@获取所有的传参,类似C语言的char **argv

2. 获取一个命令的结果是否为空

场景:在某个目录查找是否包含某个文件
一般使用双引号("")将变量括起来。将多个变量化为一个字符串,否则测试时可能会有warning
########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: [email protected]# Created Time: 2020年04月20日 星期一 15时03分23秒##########################################################################!/bin/bash<<AAA
    获取一个命令的结果是否为空
    例如:
        在某个目录查找是否包含某个文件
    一般使用双引号("")将变量括起来。将多个变量化为一个字符串,否则测试时可能会有warning
AAAisNull(){
    local result
    DIR="/mnt/hgfs/em嵌入式学习记录/shell/"
    #result=`ls | grep shell.txt`
    result=`ls ../`
    #echo "${result}"
    #./common_uages.sh: line 21: [: too many arguments
    if [ -z "$result" ];
    then
        echo "Can't find shell.txt in $PWD !!!"
    else
        echo "shell.txt is in current path."
    fi

    #上述命令可以简化为下面的方式:
    [ -z "$result" ] && echo "Can't find shell.txt" || echo "shell.txt is in current path."}

3. 检测文件系统中是否存在某个文件

场景: 需要解压缩一个tar包,首先得确认tar包存在;
########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: [email protected]# Created Time: 2020年04月20日 星期一 15时03分23秒##########################################################################!/bin/bash<<BBB
    检测文件系统中是否存在某个文件
    例如:
        需要解压缩一个tar包,首先得确认tar包存在;
BBBisFileExist(){
    FILE="linux-2.6.24.tar.bz2"
    [ -e $FILE ] && echo "$FILE is exist." || echo "$FILE is not exist!!!"
    
    DST_PATH="/tmp/linux2.6.24"
    #如果想要解压到”/tmp/linux-2.6.24目录“,那么我们首先需要检测该目录是否存在
    #如果存在,删除该目录下的所有内容;如果不存在则创建该目录
    [ ! -e ${DST_PATH} ] && echo "${DST_PATH} not exist..."
    
    [ -e ${DST_PATH} ] && rm -f ${DST_PATH}/* || mkdir ${DST_PATH}}

3. 使用sed命令修改一整行内容

场景: 修改配置文件的值
########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: [email protected]# Created Time: 2020年04月20日 星期一 15时03分23秒##########################################################################!/bin/bash<<CCC
    使用sed命令修改一整行内容
    例如:
        修改配置文件的值
CCCmodifyConfig(){
    FILE="common_usage.log"
    version="linux-4.1.23"
    #正常的做法-->不可行
    #以”REVISION=“开始的行全部替换为”REVISION=$version“
    #sed -i 's/REVISION=.*$/REVISION=$version/' $FILE
    
    #可行办法
    sed -i "s/REVISION=.*$/REVISION=$version/" $FILE}

3. 检测文件系统中是否存在某个文件

场景: 需要解压缩一个tar包,首先得确认tar包存在;
########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: [email protected]# Created Time: 2020年04月20日 星期一 15时03分23秒##########################################################################!/bin/bash<<BBB
    检测文件系统中是否存在某个文件
    例如:
        需要解压缩一个tar包,首先得确认tar包存在;
BBBisFileExist(){
    FILE="linux-2.6.24.tar.bz2"
    [ -e $FILE ] && echo "$FILE is exist." || echo "$FILE is not exist!!!"
    
    DST_PATH="/tmp/linux2.6.24"
    #如果想要解压到”/tmp/linux-2.6.24目录“,那么我们首先需要检测该目录是否存在
    #如果存在,删除该目录下的所有内容;如果不存在则创建该目录
    [ ! -e ${DST_PATH} ] && echo "${DST_PATH} not exist..."
    
    [ -e ${DST_PATH} ] && rm -f ${DST_PATH}/* || mkdir ${DST_PATH}}

4. shell脚本中的分支语句

场景: 根据不同的参数执行不同的操作;获取函数返回值
########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: [email protected]# Created Time: 2020年04月20日 星期一 15时03分23秒##########################################################################!/bin/bashcondition(){
    if [ $# -eq 1 ];
    then
        case "$1" in
            clean)
                echo "make clean..."
                return 0                ;;
            all.clean)
                echo "make all.clean..."
                return 0                ;;
            *)
                echo "make default..."
                return 1                ;;
        esac    elif [ $# -eq 2 ];
    then
        echo "Two parameters...."
        return 1    else
        cat <<-USAGE
            Usage: $0 [clean|clean.all] [para1 para2] USAGE    fi
    }condition asdf[ $? -eq 0 ] && echo "return sucess!!!" || echo "failed!!!"

标签: bin, shell, 配置文件, 测试, Author

相关文章推荐

添加新评论,含*的栏目为必填