shell第二部分

  • 一、数学运算符
    • 1、expr
    • 2、$(( )) 双括号计算
    • 3、乘方的计算
    • 4、" " | bc
    • 5、let 累加累减
  • 二、重定向与管道符号
    • 1、重定向
    • (1)< 从文件中读取
    • (2) > 覆盖保存到文件 (正确时才会执行)
    • (3)>> 追加。在文件尾部继续保存
    • (4) 2> 和2>>
    • (5)>& 混合输入
    • (6)拓展 << 和 eof 的用法
    • (7)tee命令的使用
    • 2、管道符
  • 三、位置变量介绍
  • 四、预定义变量介绍
  • 五、shell条件检测
    • 1、条件检测
    • 2、检测字符
    • 3、整数值测试
    • 4、文件类型测试

一、数学运算符

1、expr

expr 只支持整数的基本运算,不支持小数和乘方等运输,乘除*/号,还要加上转义符\

[root@localhost ~]# expr 5 + 2     //注意空格
7
[root@localhost ~]# expr 5 - 2
3
[root@localhost ~]# expr 5 \* 2
10
[root@localhost ~]# expr 5 \/ 5     //非整除时只取整数得数
1
[root@localhost ~]# expr 5 \/ 2    //非整除时只取整数得数
2
[root@localhost ~]# expr 5 % 5     //除,取余数
0

2、$(( )) 双括号计算

格式∶ $ ((表达式1,表达2))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如: a++,b–等。a++等价于a=a+1
2、在双括号结构中,所有变量可以不加入∶“$”符号前缀
3、双括号可以进行逻辑运算,四则运算
4、双括号结构扩展了for , while, if 条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
在数学是常echo 输出结果,只支持整数

[root@localhost ~]# echo $((2+5*2))      //可以不用加空格和转义符号
12
[root@localhost ~]# echo $((2%10))
2
[root@localhost ~]# echo $((2/10))    //取整数
0echo $(($RANDOM%3))     //随机并除以3取余数

3、乘方的计算

 echo $((2**10))1024或者let a=2**10echo $a1024或者利用bc调用计算器,和echo结合输出结果echo "2^10" | bc
1024

4、" " | bc

“ " |bc调用计算器不仅可以算乘方,还能计算小数

 echo "scale=3;8/5" | bc      //计算小数时,scale规定小数的个数,注意分号隔开
1.600

5、let 累加累减

sum=0
for i in {1..100}
do
if [ $((i%2)) -eq 0 ] ;thenlet sum=$(($i+$sum))fidoneecho $sum

二、重定向与管道符号

1、重定向

(1)< 从文件中读取

mysql - uroot - p123456< xuegod. sq     // 重定向导入数据库cat < 文件.text

(2) > 覆盖保存到文件 (正确时才会执行)

将显示在屏幕上的东西 覆盖保存到文件 (正确时才会执行)

echo ”123456 “ >  1.tex
cat 2.tex > 1.tex

(3)>> 追加。在文件尾部继续保存

echo "23456 " >> 1.tex   //两个>之间没用空格
cat 2.tex >> 1.tex
echo "123456" >> passwd --stdin 用户名  //无交互改密码

(4) 2> 和2>>

将执行错误的信息覆盖保存或者追加保存到文件中(只在出现错误时执行)

[root@localhost ~]# wq
bash: wq: 未找到命令...[root@localhost ~]# wq 2> 1
[root@localhost ~]# cat 1
bash: wq: 未找到命令...
[root@localhost ~]# wq 2>> 1
[root@localhost ~]# cat 1
bash: wq: 未找到命令...
bash: wq: 未找到命令...

(5)>& 混合输入

正确和错误都保存

ll >> /dev/null       //将结果丢入垃圾桶中

把/dev/null看作"黑洞”,所有写入它的内容都会永远丢失.而尝试从它那儿读取内容则什么也读不到。然而/dev/null对命令行和脚本都非常的有用;
还有的,/dev/zero在类UNIX操作系统中,/dev/zero是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL.ASCI NUL,Ox00)。典型用法是用它来产生一个特定大小的空白文件。
dd if=/ dev / zero of=b.txt bs=1M count=50

(6)拓展 << 和 eof 的用法

eof, 也可自定义其他的的字符串,当交互内容再次出现相同的efo 则会停止输入(即起了起止符的作用),过程中的内容汇入文件中

cat > 1.text << eof       //cat > >1.text << eof 内容则为追加形式存入
[root@localhost ~]# cat > 1.text  << eof
> 1
> 2
> 5
> 6
> eof
[root@localhost ~]# cat 1.text
1
2
5
6

(7)tee命令的使用

即可以显示查看,又能输入到文件中保存(覆盖),-a 则追加

例1∶将磁盘使用的信息写入文件
df -h | tee disk.log
例2∶将文件系统使用的信息追加到文件
df -h | tee -a disk.log-

2、管道符

1、管道命令只处理前一个命令正确输出,不处理错误输出·
2、管道右边的命令,必须能够接收标准输入的数据流命令才行
·3、管道符可以把两条命令连起来,它可以链接多个命令使用

三、位置变量介绍

$0 当前边环境
$1 执行脚本时,后面第一个参数为$1
$2 执行脚本时,后面第二个参数为$2

四、预定义变量介绍

1、预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示
$#:表示命令行中位置参数的个数。
$*:表示所有位置参数的内容,这些内容当做一个整体
$@:表示列出所有位置参数,但是是以单个的形式的列出
$?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
$0:表示当前执行的脚本或程序的名称
$$:表示返回当前进程的进程号
$!:返回最后一个后台进程的进程号

五、shell条件检测

1、条件检测

(1)测试表达式是否成立,若成立返回0,否则返回其他数值 。通常用$?是否等于零
格式1: test 条件表达式
格式2:[条件表达式]
分类:
a、文件测试
b、整数测试
c、字符串测试
(2)&& 和||
a、在[ 条件判断 ] 后面,&& 前面条件为是时执行,|| 条件为否时才执行

b、在两个[ 条件判断 ] 中中间,表示且和或

[条件表达式1] $$ [条件表达式2]   ,则表且的意思
[条件表达式1] $$ [条件表达式2]   ,则表或的意思

c、[ 条件1 -a 条件2 ] 以及 [ 条件1 -o 条件2 ] 也能表示且和或

if [ $score -lt 0 -o $score -gt 100 ]; thenecho "超过范围无法判断"

2、检测字符

(1)检测字符串是否为空[ -z ]    ,真时$? 为0
(2)检测字符串是否为非空[ -n ],真时$? 为0

3、整数值测试

-eq:第一个数等于(Equal)第二个数。
-ne:第一个数不等于(Not Equal)第二个数。
-gt:第一个数大于(Greater Than)第二个数。
-lt:第一个数小于(Lesser Than)第二个数。
-le:第一个数小于或等于(Lesser or Equal)第二个数。
-ge:第一个数大于或等于(Greater or Equal)第二个数

4、文件类型测试

d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File) 。
-L:测试是否为链接文件-
b:测试是否为设备文件
-c:测试是否为字符设备文件
-r:测试当前用户是否有权限读取(Read).
-w:测试当前用户是否有权限写入(Write)
-x:测试是否设置有可执行(Excute)权限-s:测试存在且文件大小为空

1、思考题:输入一个年份,判断是否是闰年(如果是就打印是闰年,否则打印不是闰年)
#!/bin/bash
read -p "请输入年份:" year
a=$(($year%4))
b=$(($year%400))
c=$(($year%100))
if [ $b -eq 0 ];thenecho "$year 年是闰年"
fiif [ $b -ne 0 ]  && [ $c -eq 0 ];thenecho "$year 年不是闰年"
fiif [ $a -eq 0 ] && [ $c -ne 0 ];thenecho "$year 年是闰年"
fi2、#判断目标主机是否存活,存活就打印is up,如果不存活就打印is down
#
#!/bin/bash
read -p "请输入主机ip :" name
ping -c 5 $name  $>/dev/null[ $? == 0 ] && echo "$name is up" || echo "$name is down"3、#判断输入的用户名是否存在,存在提示已存在,不存在则创建用户并设置密码
#!/bin/bash
read -p "请输入用户名:" name
id $name >&  /dev/null
if [ $? -ne 0 ]  ;thenuseradd $nameread -p "新用户名,输入密码:" mimaecho $mima > passwd --stdin $name
elseecho "用户已存在"
fi
~
4、#判断当前登陆用户是否是管理员
#!/bin/bash
user=$( whoami )
l=`id $user | grep root`
[ -n "$l" ] && echo "当前用户为管理者" || echo "当前为非管理用户"5、
#!/bin/bashuser=`whoami`
dname=`pwd`
zhuji=`hostname`
jincheng=` ps -aux |wc -l`
yonghu=` who |wc -l`
time=`date +%Y年%m月%d日-%H:%M:%S`
clearecho ---------------------------------------------------------------------
echo "#                          System Info Table                    #  "
echo -e "\e[1;34m#              当前登录用户为: $user                 \e[3;60H#\e[0m"
echo -e "\e[1;31m#          当前登录目录为: $dname                \e[4;60H#\e[0m"
echo -e "\e[1;33m#              当前登录主机为: $zhuji                \e[5;60H#\e[0m"
echo -e "\e[1;32m#          当前登录系统时间为: $time                 \e[6;60H#\e[0m"
echo -e "\e[1;34m#        当前系统运行进程数为: $jincheng             \e[7;60H#\e[0m"
echo -e "\e[1;33m#        当前系统登录的用户数: $yonghu               \e[8;60H#\e[0m"
echo -e "\e[1;35m#             #任何问题请联系: 139139139139         \e[9;60H#\e[0m"
echo ---------------------------------------------------------------------#当前登录目录为:
#当前登录主机为:
#当前登录系统时间为:
#当前系统运行的进程数:
#当前系统登录的用户数:
#任何问题请联系: 139139139139

shell二之条件检测与数学运算相关推荐

  1. Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  2. 大计基笔记(1)数学运算

    目录 一.数据类型 二.python支持的数学运算符号表 三.代码 1.加法和减法 2.乘法和除法 3.向下取整除法与余数 4.指数运算 四.其他 1.数学符号<< >> 五. ...

  3. shell脚本编程笔记(二)—— 执行数学运算

    数学运算在编程中也很重要,shell对它的支持并不算好,本文整理一下shell进行数学运算的途径,各种方法的缺点. 一. expr命令 shell最开始处理数学表达式的命令,可以在命令行做算术运算,参 ...

  4. linux+shell+整数计算器,Shell(())实现对整数进行数学运算

    双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活,是企业运维中常用的运算命令. 注意:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进 ...

  5. shell脚本实战-使用shell进行数学运算

    前言 上篇文章我们探讨了shell脚本的基础和变量, 在学习变量的时候我们探讨了环境变量和用户自定义变量,以及一些特殊的用法.无论使用哪种语言都少不了进行算术操作,今天我们来看看如何使用shell脚本 ...

  6. shell脚本基础(环境变量、重定向、数学运算、退出脚本)

    一.使用环境变量 1.环境变量 所谓环境变量,就是用来存储有关shell会话和工作环境信息的特性,这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们.这也是存储持久数据 ...

  7. smali to java_Smali —— 数学运算,条件判断,循环

    通过上一篇 Smali 语法解析--Hello World 的学习,了解了 Smali 文件的基本格式.这一篇从最基本的数学运算,条件判断,循环等开始,更加详细的了解 Smali 语法. 数学运算 加 ...

  8. linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  9. Linux shell 变量 数学 运算

    出处:http://qujunorz.blog.51cto.com/6378776/1382085 Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种 ...

最新文章

  1. Ubuntu 16.04 安装 PyInstaller
  2. mongodb之配置
  3. Vue.js使用-http请求
  4. delphi5开发人员指南_非设计人员的网页设计开发人员指南
  5. [转载]C#深拷贝的方法
  6. Android Sqlite3数据库操作
  7. DirectX组件之---DirectShow介绍
  8. php鲜花销售管理系统论文,鲜花销售系统论文
  9. python之turtle使用:画一颗美美哒的树
  10. java 创建manifest文件_jar Manifest例子如何将Manifest文件添加到jar文件中
  11. STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁
  12. BERT |(3)BERT模型的使用--pytorch的代码解释
  13. 数据库理论——概念模型、逻辑模型、物理模型
  14. 深入理解设计模式-外观模式(门面模式)
  15. DSPE-PEG-GE11,磷脂-聚乙二醇-肿瘤细胞表皮生长因子肽GE11
  16. 【财富空间】卡耐基梅隆首席科学家大卫·伯恩:机器人学与商业机遇
  17. 字符串训练 ----- UVA 10815题目Andy's First Dictionary
  18. HC-05自动断开解决方法
  19. 高可用核心原理综述总结
  20. WMA、MP3音质对比

热门文章

  1. 开心学PHP100天(七)]精讲PHP构造函数:父亲和儿子的恩恩怨怨
  2. Freelancer自由工作离我们还有多远?
  3. 推荐几款精致的前端web UI框架,建议收藏
  4. 操作系统启动篇--01
  5. 关于男人和女人的一些想法
  6. IOT平台架构设计思路
  7. 通过强弱软虚四种引用进一步了解垃圾回收机制
  8. CSGO(KZ模式)服务器搭建常见问题答疑
  9. Java实现稳定婚姻问题
  10. 第七届电工专项 如何进行焊接