1到10随机数
echo $(($RANDOM%10+1))
取模
let mod=2%
小数计算
echo "scale=2; 2 / 3 " | bc | awk '{printf "%.2f", $0}'
时间计算
date -d "+1 day 20191126" +%Y%m%d
now_time=`date +'%Y-%m-%d %H:%M:%S'`
now_seconds=$(date --date="${now_time}" +%s)
切换脚本所在路径
basepath=$(cd `dirname $0`; pwd)
cd $basepath
入参个数判断
if [ $# != 3 ] ; then
echo "USAGE: $0 appid hive_pre hive_hostname"
exit 1;
fi
获取上一执行结果
if [ $? -eq 1 ];then
exit 1
fi
while循环
while [[ $num <= $delay ]]
do
echo ${num}
let num=num+1
done
读文件
while read line;do
echo ${line}
done < temp
for循环
for((i=1;i<=${event_beishu};i++))
do
done
比较
大于 -gt (greater than)
小于 -lt (less than)
大于或等于 -ge (greater than or equal)
小于或等于 -le (less than or equal)
不相等 -ne (not equal)
带小数比较
1. 直接用awk
awk -v num1=6.6 -v num2=5.5'BEGIN{print(num1>num2)?"0":"1"}'
如果num1>num2打印输出0,否则输出1
2.expr
expr $a > $b
3. br
echo "6.6>5.5" |br
字符串替换
${var%pattern},${var%%pattern} 从右边开始匹配
${var#pattern},${var##pattern} 从左边开始匹配
${var%pattern} ,${var#pattern} 表示最短匹配,匹配到就停止,非贪婪
${var%%pattern},${var##pattern} 是最长匹配
[root@bogon ~]# file="modify_suffix.sh.tar.gz"
[root@bogon ~]# echo "${file%%.*}"
modify_suffix
[root@bogon ~]# echo "${file%.*}"
modify_suffix.sh.tar
[root@bogon ~]# echo "${file#*.}"
sh.tar.gz
[root@bogon ~]# echo "${file##*.}"
gz
字符串指定分隔符
#!/bin/bash
string="hello,shell,haha"
array=(${string//,/ })
forvarin${array[@]}
do
echo$var
done
打印到屏幕同时输出到日志文件
sh main.sh | tee -a lm.log
变量为空默认值
${num:=0}
多行注释
<<'COMMENT'
#......................
COMMENT
:<<!
#................
!
随机字符串
head /dev/urandom | tr -dc a-z0-9 | head -c 16