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!!!"