shell常用记录

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  #关闭跟踪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值