bashrc:
Linux date 命令可以用来显示或设定系统的日期与时间。Linux date 命令 | 菜鸟教程
linux的系统时间在shell里是可以直接调用系统变量的如: 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d)
创建一个文件带上日期:
alias cr_file='mkdir hello_$(date "+%Y%m%d_%H%M%S")'
shell中:$():括号里面执行完返回值。
提示符:显示路径和文件
cd() { builtin cd "$@" && ls; }
shell脚本:
if then用法:Linux中if语句用法总结_linux脚本 if[==]-优快云博客
if [];then fi
语句
if语句中通常用[]
来表示条件测试,可以比较字符串、判断文件是否存等。备注:[ ] 中表达式两边与括号之间要有空格
备注:expression表达式 和方括号[ ]
之间必须有空格,否则会有语法错误。
#!/bin/bash
a=$1
b=$2
if [ $a == $b ];then
echo "a and b is equal"
elif [ $a -lt $b ];then
echo "a less than b"
else
echo "a bigger than b"
fi
实用脚本
1)例如判断日志文件中是否存在error
#!/bin/bash
WORK_DIR=/home/hadoop/ktl_wks
LOG_DATE=`date +%Y%m%d`
LOG_TIME=`date +%H%M%S`
LOGFILE=${WORK_DIR}/log/${LOG_DATE}${LOG_TIME}_start.log
#检查执行是否正常
ERR_LOG=`cat ${LOGFILE} | grep 'error' | awk -F ' ' '{print $1}'`
if [ -z ${ERR_LOG} ];then
echo `date +'%Y-%m-%d %H:%M:%S'`" 日志检查结束,检查结果为:正常." >> ${LOGFILE} 2>&1
else
echo `date +'%Y-%m-%d %H:%M:%S'`" 日志检查结束,检查结果为:发现异常!!" >> ${LOGFILE} 2>&1
fi
2)执行失败不想退出,可以采用:cmd1 || cmd2;只有cmd1失败了才会执行cmd2;
3)cmd1 && cmd2:只有cmd1执行成功了,才会执行cmd2;
踩到的坑
1)if里面的test如果有语法问题,就会得到非0的退出状态,走else分支;实际中遇到的情况是去grep了comp文件的error,没有就打印成功,应该是返回的格式里面可能有不合法的问题导致的;后面采用:[[ express ]] + =~的方法解决的,直接加双引号应该也可以解决。=~:可以进行正则匹配,参考《linux命令行大全》第二版P324;
2)shell的脚本跟踪技术;
在调试gitlab-ci.yml的脚本部分时,发现grep文本的error失败后会直接退出去,不再执行后面的语句。之所以会这样,可能是更顶层的脚本,设置了下面这个:
#!/bin/bash -x
这个会导致某一行执行失败就会退出。参考《linux命令行大全》第二版P358;
以及只对部分脚本代码进行跟踪:可以采用下面这个形式:
set -x #打开跟踪
。。。
set +x #关闭跟踪