shell - 变量,流程控制

1. 查看内存
 free -m
 free -m|awk '/^Mem/ {print $3/$2*100}'
2. 监控内存使用超过80 报警
free_use = free -m|awk '/Mem/ {print $3/$2*100}'
echo ${free_use%.*}   # 从后往前删,用%
if [ ${free_use%.*} -gt 80];then
    echo "内存超80"
fi

3. 创建10个文件,将txt 改为txt.bak, 把bak文件打包为123, 还原文件的名字
touch /backup/file{1..10}.txt
find /backup -iname "*.txt"
new_file = $(find /backup -iname "*.txt"|sed -r 's#(.*)#mv \1 \1.bak#g')|bash
打包
tar czf /backup/123.tar.gz $(find /backup -iname "*.bak")
还原
find /backup -iname "*.bak"|sed -r 's#(.*).bak#mv \1.bak \1#g'|bash
4 rename 修改名称
rename jpg jpeg *.jpg
5. string="Bigdata process is Hadoop,Hadoop,hadoop is open source project"
-- 1. 打印string 长度
-- 2. 删除字符串所有的Hadoop
-- 3. 替换第一个Hadoop 为linux
-- 4. 替换全部Hadoop 为Linux
用户输入1,2,3,4执行对应的功能,输入 q|Q 退出

shell 变量的运算

1. 整数运算, expr, $(()), $[]
+ - * / %
# expr $num1 + $num2
# echo $(( $num + $num1 ))
# $[ $num + $num1 ]
2. 小数运算
echo "2^4" |bc
echo "scale=1;6/4" |bc
echo "scale=2;6/4" |bc
awk 'BEGIN{print 1/2}'

流程控制

if [ ];then
    echo
else
    echo
fi

if [ ];then
elif[ ];then
elif[ ];then
else
fi
#例1
#!/usr/bin/bash
if [ $# -ne 1 ];then
        echo "only one paramter"
        exit
fi
if grep "$1" /etc/passwd;then
        echo 'ok'
else
fi    

if语句中的文件比较

-r 文件存在且可读为真
-w 文件存在且可写
-x 文件存在且可执行
-d 文件存在且为目录
-f 文件存在且为普通文件
-e 文件或目录存在为真
-s 文件存在且至少有一个字符
加 ! 取反
if [ -f /etc/hosts ]; then
    echo $?
fi
[ -f /etc/hosts ] && echo $? || echo '不存在'

dir=/ect1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir不存在"

# 备份mysql , 手动输入要备份的库名称
1. 提示用户输入 read
2. 输入数据库名称,执行mysqldump 备份
3. 备份到哪, /backup/mysql

User=root
Pwd=123
[ -d /backup/mysql ] || mkdir -p /backup/mysql
read -p " database name: " db
usr/bin/mysqldump -u$User -p$Pwd --single-transaction -R -B $db >/backup/mysql/db01_$(date +%F).sql

例: 检查服务是否运行的脚本

# 判断服务是否运行
#systemctl status sshd
# $# 表示传参的个数
if [ $# -ne 1 ];then
    echo "please enter 服务名"
    exit
fi
systemctl status "$1" &>/dev/null
rc=$?
if [ $rc -eq 0 ];tehn
    echo "在运行"
else
    echo "没在运行"
fi

磁盘使用率超过80% 发邮件报警

# 查看磁盘
df -h
disk_use=$(df -h|grep "/$"|awk '{print $(NF-1)}')
if [ ${disk_use/\%/} -ge 80 ];then
    echo "大于80"
else
    echo "正常"
fi

原文地址:https://www.cnblogs.com/Afrafre/p/11405712.html

时间: 2024-10-15 15:34:14

shell - 变量,流程控制的相关文章

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件

shell脚本流程控制

shell 脚本变成使用过程中通常需要流程控制,一般情况下是顺序执行,在实际使用过程中根据不同情况需要执行不同命令,这时就用到选择执行比如if.case,有时需要重复执行多次,循环执行比如for.while.until 条件选择执行语句if 单分支 双分支 if 判断条件;then 条件为真的分支代码 fi if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi [[email protected] ~]# vim score.sh   1 #!/bin/bash  

Linux Shell之五 流程控制--选择

流程控制可根据不同的情况做不同的处理,而且可重复执行指定的程序区域,展现程序的生产力.在Bash Shell中,流程控制可以分为两大类: "选择"和"循环": 1.选择:if.case.select 2.循环:for.while.until.select 命令select既属选择也属于循环. 一.命令的结束状态 在Shell中每一个命令执行后,都会传回一个结束状态值,只分两种,如果成功,传回0,失败则传回非0. 当命令执行后,用$?来查看状态返回值,当在Shell进

10、shell编程+流程控制+分支嵌套

SHELL 编程 shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. 查看本机shell 信息: cat /etc/shells     --查看本支持的shell echo $SHELL --查看当前支持的shell shell 在执行命令时,各种命令的优先级: 别名 -> 关键字 -> 函数 -> 内置命令 -> 脚本 别名:命令的另一种形式,有些情况下可以简化命

shell的流程控制介绍

Lnux shell和Java.PHP等语言不一样,它有一套自己的流程控制语句,其中包括条件语句(if,case),循环语句(for,while,until),循环控制语句(continue,break,shift).下面我会通过一些简单明了的例子来介绍下各个语句的使用方法. 一.条件语句     1.if语句 (1)单分支结构 if 判断条件; then 条件为真的分支代码 fi 示例:testif1.sh     #!/bin/bash     a=5     if [[ a -gt 4 ]

Linux Shell之六 流程控制--循环

一.for循环 for循环的运作方式,是将串行的元素一一取出,依序放入指定的变量中,然后重复执行包含的命令区域(在do和done之间),直到所有的元素取 完为止.其中,串行是一些字符串的组合,彼此用$IFS所定义的分割字符(如空格)隔开,这些字段串称为字段. for的语法 for  变量 in 串行     将串行的字段迭代放入变量中 do     命令区域                        重复执行命令区域,知道串行中每个字段均处理过 done !/bin/bash for i i

shell 10流程控制

if 判断 if #shell #!/bin/sh a=5 if [[ $a > 3 ]];then echo "$a>3" fi #写成一行 if [[ $a < 6 ]];then echo "$a>3";fi 5>3 5>3 if else #shell #!/bin/sh a=5 if [[ $a > 8 ]];then echo "$a>8" else echo "$a<8

shell之流程控制

一.if语句.while.for循环各种小例题 1.用户验证 [[email protected] ~]# cat buer.sh #!/bin/bash #user='buer' #password='1234.com' read -p 'please your name:' user read -p 'password:' passwd if [ $user = 'buer' -a $passwd = '1234.com' ];then echo 'login successful' fi

Linux Shell基础 - 流程控制 - for循环

01.for循环 语法一: for  time in  m n  a e    =>    以空格区分for循环个数 do echo  "This time is $time" done 语法二: s=0 for (( i=1;i<=100;i=i+1 )) do s=$(( $s+$i )) done echo "The sum of 1+2+....+100 is : $s" 例子:批量解压缩脚本 cd /lamp ls *.tar.gz>ls

Shell编程 流程控制——流程控制语句

if if<判别命令> then {命令清单1} else {命令清单2} //可省略 fi 注意,<判别命令>通常是上述的 “test<表达式>”.如果只写<表达式> 需要用中括号括起来.(中括号两边要有空格) 如果判别命令返回0(表达式成立)反之则执行else{} 分号是多个语句之间的分割符,当只有一个语句的时候,末尾无需分号,最后一个语句后面与无需分号. 例如: if []; then 完全等效于 if [] then 1 #!/bin/bach 2