Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134669
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 550
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-08 20:28
个人简介

永远不要放弃学习,放弃学习就是放弃了勇敢生活下去的动力!

文章分类

全部博文(30)

文章存档

2014年(30)

我的朋友

分类: 系统运维

2014-03-08 16:44:02

今天自己想把shell编程好好的学习一边,我想看看自己可以用一星期时间可不可以学的行不。开始干。首先解决编写环境问题,我决定用windows学习shell编程,用Notepad++编辑器编写shell程序,下载cxywin程序模拟shell环境,这样就可以不破坏系统,也不用虚拟机耗内存了。最后实践发现当你做shell实验的时候用cxywin不行,所以我们还是要建一个虚拟机,最小化安装就行。
        先写一个if语句

点击(此处)折叠或打开

  1. #!/bin/bash
  2. if [ $UID -ne 0 ]; then
  3. echo "not root user"
  4. else
  5. echo "root user"
  6. fi

判断当前用户是不是root  其中if语句的用法  我们很容易就明白了, -ne就是不等于的意思
1.4 通过shell进行数学运算
let 进行整数的加减乘除运算

点击(此处)折叠或打开

  1. #!/bin/bash
  2. no1=4;
  3. no2=5;
  4. let result=no1+no2
  5. echo $result

利用bc函数可以进行浮点数运算

点击(此处)折叠或打开

  1. #!/bin/bash
  2. var=3.14;
  3. var=`echo "$var *1.5" | bc`
  4. echo $var

在编辑这个shell时候我遇到了一个让我郁闷的问题,原来var=`echo "$var *1.5" | bc`中的`千万不要写成’这个让我郁闷死了,还以为课件错了呢。分号作为界定符号,通过 | 传送给bc工具计算

设定小数的精度

点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo "scale=2;3/8" | bc

scale=2就是设定小数的精度的。

bc还可以进行进制间的转换

点击(此处)折叠或打开

  1. no=100
  2. echo "obase=2;$no" | bc
  3. no2=1100100
  4. echo "obase=10;ibase=2;$no2" | bc

obase=2代表要转到的进制,ibase=2代表要转的数是什么进制的,系统默认是十进制的。

bc可以求平方根,还有计算次方运算

点击(此处)折叠或打开

  1. echo "sqrt (100)" | bc
  2. echo "10^2" | bc

由此我们可以编辑一个四则混合运算器了。我们通过read函数读取用户输入

点击(此处)折叠或打开

  1. echo "输入你的运算式子"
  2. read var0
  3. var1=`echo "scale=2;$var0" | bc`
  4. echo $var1

我们保留两位小数的运算。
我们还可以编一个进制转换的shell

点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo "请输入你的数"
  3. read var
  4. echo "你输入的什么进制"
  5. read var2
  6. echo "你要转成什么进制的数"
  7. read var3
  8. var4=`echo "obase=$var3;ibase=$var2;$var" | bc`
  9. echo $var4

1.5 获取终端信息
在输入密码的时候 不让用户输入的内容显示出来

点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo -e "输入密码:"
  3. stty -echo
  4. read password
  5. stty echo
  6. echo
  7. echo $password

tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。sleep 可以使脚本推迟执行,下面利用tput和sleep从0开始计数到40


点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo -n count
  3. tput sc

  4. count=0
  5. while true;
  6. do
  7. if [ $count -lt 40 ];
  8. then let count++;
  9. sleep 1;
  10. tput rc
  11. tput ed
  12. echo -n $count
  13. else
  14. exit 0;
  15. fi
  16. done
        在上面例子,变量count初始值是0,随后每次循环一次便增加1.echo语句打印count的值,我们用tput sc 存储光标位置,在每次循环中,我们通过恢复之前存储的光标位置,在终端打印新的count值,回复光标的命令是tput rc 。tput ed 清除从当前光标位置到行尾之间的所有内容,使的旧的count值可以被清除并写入新值。循环内的一秒钟延迟通过sleep来实现。
今天就先写到这里吧,其实我觉得shell脚本基础只要会了,知道怎样去做,那么剩下的就是你知道的命令的储备量了。总而言之,我们要多看,多记,做运维的人不是那么容易的!

阅读(1713) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~