shell脚本测试变量是否为空,测试文件是否存在,sed修改配置文件参数,分支语句

Shell脚本

1. 基本的几个变量

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

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

场景:在某个目录查找是否包含某个文件

一般使用双引号("")将变量括起来。将多个变量化为一个字符串,否则测试时可能会有warning

########################################################################## File Name: common_usages.sh# Author: Toney Sun# mail: vip_13031075266@163.com# 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: vip_13031075266@163.com# 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: vip_13031075266@163.com# 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: vip_13031075266@163.com# 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: vip_13031075266@163.com# 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!!!"

               

上一篇:ACM----CodeForces - 1406B Maximum Product


下一篇:HDU Corn Fields