shell中常用的算术运算
1.加法
x=4
y=5
# 方法1
r=`expr $x + $y + 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x+y+1)) # 或者
r=$(($x+$y+1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x+y+1] # 或者
r=$[$x+$y+1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x+y+1 # 或者
let "r=$x+$y+1" # 或者
let r=$x+$y+1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
echo $x + $y + 1 | bc # 或者
echo "$x + $y + 1" | bc # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1+$2}'`
2.取余
x=10
y=7
# 方法1
r=`expr $x % $y - 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x%y-1)) # 或者
r=$(($x%$y-1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x%y-1] # 或者
r=$[$x%$y-1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x%y-1 # 或者
let "r=$x%$y-1" # 或者
let r=$x%$y-1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
r=`echo $x % $y - 1 | bc` # 或者
r=`echo "$x % $y - 1" | bc` # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1%$2}' `
3.浮点数运算
# 小数点后留5位
echo "scale=5;$x/$y" | bc
echo $x $y | awk '{printf "%.5f\n", $1/$2}'
进制转换:
echo $x | awk '{printf "%x\n", $1}'
下面shell脚本实现的功能:
- 连续执行sql语句
- 不打屏(2>&1)
- 定时生成一个日志(防止日志文件过大)
- 每个循环添加一个时间戳
- 文字闪烁效果的应用
#!/bin/sh
db=postgres
port=6000
num=1
echo -e "\033[37;31;5mI am running,don't touch me!!!!!!!!\033[39;49;0m"
echo "clean test1" > test1
for ((i=1;i<=51840;i++));do
{
echo $(date +%F%n%T) >> test$num
gsql -d $db -p $port -a -f "mysql_create_alter_table_function_scence.sql" >> test$num 2>&1 &
wait
gsql -d $db -p $port -a -f "mysql_create_alter_table_abnormal_scence.sql" >> test$num 2>&1 &
wait
if [ $(($i%1000)) == 0 ];then
num=$(($num+1))
fi
}
done
从test2文件中获取包含time的行,每行取第三个字符,去掉第一行的字符,后面的字符依次相加,输出总和:
grep 'time' test2 | awk '{print $3}' | sed '1d' | awk '{sum+=$1} END {print sum}'
linux炫酷欢迎语设置:vi /etc/motd
/**
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ____/`---'\____
* .' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* 佛祖保佑 永无BUG
* 佛曰:
* 写字楼里写字间,写字间里程序员;
* 程序人员写程序,又拿程序换酒钱。
* 酒醒只在网上坐,酒醉还来网下眠;
* 酒醉酒醒日复日,网上网下年复年。
* 但愿老死电脑间,不愿鞠躬老板前;
* 奔驰宝马贵者趣,公交自行程序员。
* 别人笑我忒疯癫,我笑自己命太贱;
* 不见满街漂亮妹,哪个归得程序员?
*/
设置有趣的ASCII文字或表情图
生成地址1:https://www.bootschool.net/ascii
生成地址2:https://www.qtool.net/imgascii
Linux shell多进程并发以及并发数控制
https://www.jianshu.com/p/2d60e6513fdd
shell脚本并发