数值运算工具:

整数运算工具expr a + b ( + - * / % 加 减 乘 除取商 除取余)
$[1+1]其中直接写就可以 或$(()) 
x=1 y=2
echo $[x+y] #( 变量直接写进其中就可以)
let 运算之后不回显结果let( i++ i=i+1 i-- i=i-1
i+=3 i=i+3 
i-- i=i-1 i=2 i=i2
i/=2 i=i/2 )
x=2
let x=x+8
echo $x
小数运算:bc进入到计算机(除的时候要控制小数点的位数scale)
echo “scale=2;2.2+3;3.3+3” | bc .20
非交互式的多个计算用;隔开以“”引起来
逻辑判断:echo “1>2” | bc (0)
echo “4>2” | bc (1)
echo “4==4” | bc (1) 

判断: 
echo $RANDOM(输出的为随机数)
[ 判断表达式 ] (注意空格) test 判断表达式
字符判断:
是否相等?[ ‘a’ == ‘a’ ]判断a是否等于a; (查看echo $?)
是否不等于?[ ‘a’ != ‘b’ ]判断a是否不等于b (查看echo $?)
判断变量的值是否为空?[ -z $abc ]判断abc的值是否为空 ...
判断变量的值是否不为空[ !-z $abc ]判断abc是否不为空 ...
****在linux中一行如何打多条命令
A;B 执行A,执行B
A&&B 执行A,仅当A成功才执行B (且)
A||B 执行A,仅当A失败才执行B (或)

数字判断:
-eq 等于 equal
-ne 不等于 not equal
-gt 大于 greate than
-ge 大于等于 
-lt 小于 less than
-le 小于等于

例:
1.每分钟检测放前计算机登陆 用户的数量如果大于2,则发送邮件报警
crontab -e
 /1.sh
2.vim /1.sh
#!/bin/bash
Num=who | wc -l
[ $num -gt 2 ] && mail -s www root < a.txt
3.mkdir /a.txt 
echo 后院失火 | /a.txt

文件或目录判断:
-e判断是否存在 exist
-f判断存在,且为文件file
-d判断存在,且为目录dir
-r判断是否可读read
-w判断是否可写write
-x判断是否可执行excute
if判断: 
ping -i(指定两次之间的间隔时间)-W(指定等待时间)-c(指定次数)
单分支if(仅判断对)
if [ 判断 ];then
命令
fi

双分支if判断
if [ 判断 ];then
命令
else
失败
fi

大于等于90 神功绝世
大于等于80,小于90 登峰造极
大于等于70,小于80 炉火纯青
大于等于60,小于70 略有小成
小于60 初学乍练

例1:(运行脚本测试ip地址师傅可以ping通)
#!/bin/bash
read -p "请输入IP地址:" ip
ping -i0.1 -W1 -c4 $ip &> /dev/null
if [ $? -eq 0 ];then
echo "该IP地址通"
else
echo "该IP地址不通"
fi
~

例2:(运行脚本检查80端口是否开启在运行)
#!/bin/bash
netstat -anput | grep :80 &>/dev/null
if [ $? -eq 0 ];then
echo 80端口已经启动
else
echo 80端口没有启动
fi

例3:(运行脚本检查httpd的软件包是否安装)
rpm -qa |grep httpd &>/dev/null
if [ $? -eq 0 ];then
echo "该软件包已经安装"
else
echo "该软件包没有安装"
fi

例4:(运行脚本运用if判断不同分值范围的而实现输出修炼结果的不通)
#!/bin/bash
echo " 人界修炼等级榜 
(此法宝为消耗品只可以使用100) "
for i in {1..100}
do
read -p "

    请输入道要查阅的道号:" name

read -p " 请输入测试石显示的整数测试积分:" jf
if [ $jf -gt 100 ];then
echo "
$name:人界系统权限不足无法查看详细等阶请查看仙界等阶榜"
elif [ $jf -ge 100 ];then
echo "
$name:的目前修炼等阶为大乘期"
elif [ $jf -ge 90 ];then
echo "
$name:的目前修炼等阶为元婴期"
elif [ $jf -ge 80 ];then
echo "
$name:的目前修炼等阶为金丹期"
elif [ $jf -ge 70 ];then

echo "
$name:的目前修炼等阶为筑基期 "
elif [ $jf -ge 60 ];then
echo " 
$name:刚刚步入修炼为炼气期 "
elif [ $jf -gt 0 ];then
echo " 
$name:为一凡人尚未开始修炼 "
else
echo " 
$name:人界等阶榜查无此人请查看冥界等阶榜"
fi
done

shell循环介绍:

for循环:
for 变量名 in 值列表
do
命令序列
done

seq使用:
echo {不能使用变量} seq $X (后面可以使用变量)
echo {5..10} == seq 5 10(输出为5到10)
seq 5 (输出为1到5)

例:实现自动检查172.40.51.100到172.40.51.200之间能否ping通

#!/bin/bash
a=0
b=0
for i in seq 100 200
do
ping -c1 -i0.1 -W1 172.40.51.$i &>/dev/null
if [ $? -eq 0 ];then
echo “172.40.51.$i is up”
let a++
else
echo “172.40.51.$i is down”
let b++
fi
done
echo "开机的有$a 个,关机的有$b 个"

2.计算1+2+3+4。。。+100的和(expr echo | bc let <let 在计算变量是不显示出来的>)
#!/bin/bash
x=0
for i in {1..100}
do
let x+=i
done
echo $x

3.将/var/log每个文件,单独打包,保存到/tmp

#!/bin/bash
#x=find /var/log -type f
for i in ls /var/log
do
tar -zcf /tmp/$i.tar.gz $i
done

while循环:

while [ 条件测试]
do 
命令序列
done
例: i=1
while [ $i -lt 10 ]
do
echo “nihao”
let i++
done

死循环
while :
do
命令序列
done

case判断语句:(简化的if,每一个语句的结束都以;;结束《 )中写匹配条件》 )
case $1 in
redhat)
echo “fedora”;;
fedora)
echo “redhat”;;
*)
echo “Usage”
Esac

case "$1" in
-n)
touch "$2" ;;
-e)
vim "$2" ;;
-c)
cat "$2" ;;
-r)
rm -rf "$2" ;;
*)
echo "Usage :$0 (-n|-e|-c|-r)文件名" 
esac

Shell脚本的函数:
(给一堆代码取个别名)

定义函数
函数名(){
命令
}
调用函数:函数名
<直接在命令行书写就可以>
例:
mymkdir(){
mkdir /a
mkdir /b
}
执行:mymkdir(在根下创建目录为a和b)
只是当时有效,放在/etc/profile下是永久有效
mymkdir(){
mkdir /$1
}
执行:mymkdir aaa(创建一个目录在根下为aaa)

echo -e “\033[ 32mOK\033[0m”

(extend扩展echo的功能,扩展一个颜色,为32的颜色,改变的我OK的颜色,改回0的颜色<0没有颜色> 同时指定用分号隔开<例:~[ 32;44mOK\033[0m>)
3x 是字体颜色4X为背景颜色x为样式
cecho(){
echo -e "\033["$1"m"$2"\033[0m"
}

cecho 32 OK
cecho 33 Error
cecho 34 Warning

echo -n(不另起一行)

中断与退出:
Break(中断整个循环体)continue(中断本次循环进入下一次循环)exit(中断整个脚本) 
可以给for和while
例:
for i in {1..5}
do
[ $i -eq 3 ] && break
echo $i
done
echo OK
(输出的为1 2 OK)

for i in {1..5}
do
[ $i -eq 3 ] && continue
echo $i
done
echo OK
(输出的为1 2 4 5 OK)

for i in {1..5}
do
[ $i -eq 3 ] && exit
echo $i
done
echo OK
(输出的为1 2 )

for i in {1..254}
do
[ $i -eq 3 ] && continue
ssh 192.168.4.$i “poweroff”
done
#如本机的ip为192.168.4.3

#!/bin/bash
b=0
while :
read -p "请输入一个整数:" a
do
[ -z $a ] && break
let b=b+$a
done
echo 此次计算的总和为"$b"

本文转自 英强云计算 51CTO博客,原文链接:http://blog.51cto.com/13404755/2050386,如需转载请自行联系原作者

shell脚本编写知识2相关推荐

  1. Linux编写脚本nsum求和,详解Linux Shell脚本编写技巧,附实例说明

    原标题:详解Linux Shell脚本编写技巧,附实例说明 Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法很都掌握,但有需求时,很难直接上手编程,要么写了很久,要么写不好!对 ...

  2. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  3. shell 脚本编写 if else then

    shell 脚本编写 if else then if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试 ...

  4. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  5. 7. Shell 脚本编写

    7. Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bas ...

  6. shell脚本编写遇到的问题--循环

    shell脚本编写遇到的问题 0 背景 工作中需要修补数据,大概半年的数据;跑数据是scala脚本+python脚本,如果手动补充数据,需要运行180次- 于是,shell脚本搞起来- 1 规划思路 ...

  7. datetime报错 sql脚本_Linux中Mysql数据库备份shell脚本编写实例

    学了段时间的Linux,也学习了shell脚本编写的基本命令与语法,现做一个综合案例来详细讲解. 要求:1).每天凌晨备份数据库shaoxiao到/data/backup/db中 2).备份开始和备份 ...

  8. Linux系统一键安全加固shell脚本编写思路

    本次分享一下个人在对Linux系统一键安全加固shell脚本编写时的一些思路: Linux系统一键安全加固shell脚本编写思路 1.编写须知 1.1 脚本使用说明 1.2 主要功能说明: 1.3隐藏 ...

  9. linux脚本设计菜单,菜单式shell脚本编写

    用shell脚本编写有以下的功能: Syste Manage 1.show the user //显示登陆系统用户以及动作. 2.test the network //网络测试 3.show the ...

最新文章

  1. CSDN 字体颜色表
  2. JSON字符串通过response下载保存
  3. c语言控制数码管显示时间,数码管显示时间整点报时C语言实例
  4. layui表单的ajax联动,layui的select联动实现代码
  5. html柳树动画,3D教程-柳树生长动画
  6. java基础工具VisualVM介绍与详细使用
  7. mysql记录当前表数据的数据条数据类型_MySQL学习记录:数据类型与操作数据表...
  8. 在有网络还是比较好解决软件上的问题
  9. aforge java_基于Aforge摄像头调用简单实例
  10. 【visio】visio绘制流程图教程
  11. 高位十字星收盘什么意思?高位十字星缩量是什么?
  12. [bzoj4556][TJOIHEOI2016]字符串
  13. 100base-fx 单模/多模接口是什么意思
  14. [基础]tfcenter的安装和启动
  15. android EditText 属性
  16. 南邮-NCTF2022 WRITE UP
  17. python接收http请求_python通过get,post方式发送http请求和接收http响应
  18. Romi Robot Kit (for FIRST) 快速入门指南
  19. Linux常用命令(4)-磁盘管理
  20. DBMS 数据库管理系统的三级模式架构《ClickHouse 实战:企业级大数据分析引擎》...

热门文章

  1. 从大型主机到个人计算机:机器人产业可以从pc普及革命中学到什么?
  2. 观点 | 李飞飞最新访谈:我每天都在对AI的担忧中醒来
  3. “新视野”和“最远点”的约会
  4. 《科学》盘点2018可能被聚焦的研究领域
  5. 前百度首席科学家吴恩达携手富士康,要用人工智能升级制造业
  6. 麻省理工和 IBM 合作创立 Watson AI 实验室,谨慎推进 AI 研究
  7. 要不要跳槽,看完就懂了
  8. 新基建来势汹汹,开发者如何捍卫其安全?
  9. 多样性计算时代,怎样的技术生态才能满足发展需求
  10. 据说只有程序员才看得懂 | 每日趣闻