输出脚本详细步骤
set -x
打印输出及提示用户输入
echo -e "I will use 'touch' command to create 3 files."
read -p "Please input your filename: " fileuser
filename=${fileuser:-"filename"} # 开始判断有否输入了文件名,如果没有输入,则使用默认的filename
date1=$(date --date='2 days ago' +%Y%m%d) # 前两天的日期
date2=$(date --date='1 days ago' +%Y%m%d) # 前一天的日期
date3=$(date +%Y%m%d) # 今天的日期
# 下面三行在配置文件名
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}
# 下面三行在创建文件
touch "${file1}"
touch "${file2}"
touch "${file3}"
获取日期
- 今天:today=
date +%Y-%m-%d
- 昨天:yestoday=
date -d "last day" +%Y-%m-%d
- 明天:tow=
date -d "next day" +%Y-%m-%d
- 本月:currmon=
date +%Y-%m
- 下一月:nextmon=
date -d "last month" +%Y-%m
- 上一月:lastmon=
date -d "next month" +%Y-%m
判断参数个数
if (( $# != 2 ))
then
echo $# # 显示脚本后接的参数个数
echo "$0 para1 para2";
exit 1
fi
PARA1=$1
PARA2=$2
判断字符串
if [ "$PARA1" = "" ]; then
PARA1="default"
fi
OS=`uname`
if [[ "$OS" =~ "Darwin" ]]; then
OS=3
else
OS=`cat /etc/redhat-release`
if [[ "$OS" =~ "CentOS release 6" ]]; then
OS=1
else
OS=`cat /etc/os-release`
if [[ "$OS" =~ "CentOS" ]] || [[ "$OS" =~ "Tencent tlinux" ]]; then
OS=1
elif [[ "$OS" =~ "Ubuntu" ]]; then
OS=2
else
echo "OS not support:"
echo $OS
exit 1
fi
fi
fi
# 判断目录是否存在
if [ -d boost_1_64_0 ]; then
rm -rf boost_1_64_0
fi
获取命令行运行结果
OS=`uname`
PWD = $(pwd)
INET = $(ifconfig | grep mtu | grep -v lo | awk 'BEGIN {FS=":"} {print $1}')
交互式命令的确认
有些操作需要输入yes才会继续,可以在脚本中写好:
yes | cp -rf ./a.out ./a.out.bk
yes | mv ./a.out ./a.out.bk
获取命令的返回值
类似于程序中的返回值,每个命令执行后都会有返回值,0为正常,其他为异常:
#centos
yum -y install gcc gcc-c++ python python-devel libicu libicu-devel zlib zlib-devel bzip2 bzip2-devel
if [ $? != 0 ]; then
echo "yum install dependence of boost error" && exit 1
fi
#or
yum -y install gcc || echo "yum install dependence of boost error" && exit 1 # "||"表示前述命令执行失败的话,则执行后述语句,“&&”表示前述echo执行成功的话,则执行exit
定义函数
function a() {
cp -rf liba.so /usr/local/lib/
}
function main(){
a
}
main # 开始执行
删除指定目录下指定后缀文件
如,删除当前目录下所有以log结尾的文件,注意find会遍历目录,建议先ls看一下是不是想删除:
find . -type f -name '*.log' -exec rm {} \;
分析top日志打印id最小的前几条数据
使用crontab把top加入定时任务,可记录一天的运行记录。
使用下面的语句可按id升序打印:
grep -E 'Cpu.*id' top_20210224.log | awk '{print $8}' | sort -n | head