码迷,mamicode.com
首页 > 系统相关 > 详细

shell

时间:2016-03-17 19:49:06      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:shell

整数值比较

-eq   等于

-ne   不等于

-ge  大于或等于

-le   小于或等于

-gt  大于

-lt   小于

 shell预定义变量  (/bin/bash自带的变量)
变量名  和  存储的值  都不可以修改
变量的值 是根据当前系统运行的环境 获取。
在写脚本时可以直接使用。

$0   当前所在的进程或脚本名
$$   当前运行进程的PID号       kill   -9   $$
       touch   $$.txt

$?   上一条命令执行后的返回状态
         0  上条命令正确执行
     非0   上条命令执行错误

$!  当前终端最近后台运行进程的pid 号

 

$#  脚本或函数 位置变量  的总个数

$*  脚本或函数所有  位置变量  的值

3  位置变量
$1   脚本或函数 第一个位置的参数的值
$2   脚本或函数 第2个位置的参数的值

export  把变量定义为全局变量,能在当前进程,和当前进程的子进程里使用。

vim /etc/profile
y=203
export  y

export   x=101
--------------------------------------------------------------------
条件判断  程序根据条件判断的结果去执行
                条件判断的结果要么成立 要么不成立
                对不同的对象做判断使用不同选项
判断命令    test     表达式
                  [   表达式      ]

文件状态
-e
-d
-f
-x
-r
-w

test  -d  /etc
echo $?
字符比较
相等    =
不相等   !=
非空    -n   "string"
空     -z    "string"

逻辑比较   (2个或以上判断条件)
逻辑与     &&     多个判断条件必须同时成立
逻辑或    ||          多个判断条件只要有一个条件成立就可以
逻辑非    !          取反

数值运算    (运算命令        表达式)
                     expr  表达式
                     let  表达式
                    $((表达式))
                    $[ 表达式]

+   -  *   /

%  取余(求模)

++  自加运算 : 自己加1之后,把结果赋值给自己
--    自减运算:   自己减1之后,把结果赋值给自己

$((运算表达式))
$[运算表达式]

[root@svr5 shell]# $((3+5))
bash: 8: command not found
[root@svr5 shell]# echo $((3+5))
8

[root@svr5 shell]# x=10
[root@svr5 shell]# echo $((x++))
10
[root@svr5 shell]# echo $x
11
[root@svr5 shell]# y=21
[root@svr5 shell]# echo $((++y))
22
[root@svr5 shell]# echo $y
22

使用bc 做小数运算
[root@svr5 shell]# x=10.2 y=12.2
[root@svr5 shell]#
[root@svr5 shell]# echo "$x+$y" | bc
22.4
[root@svr5 shell]# z=`echo "$x+$y" | bc`
[root@svr5 shell]# echo $z
22.4
[root@svr5 shell]#


[root@svr5 ~]# A=12.34

[root@svr5 ~]# echo  "$A*56.789"  |  bc             
700.776[root@svr5 ~]# echo  "scale=4; $A*56.789; 5/3"  |  bc      //多表达式
700.7762
   1.6666

shell流程控制  ( if  结构     循环结构    分支结构)
                       控制脚本的执行过程
                       流程控制彼此可以互相嵌套使用,也可以自己嵌套自己
                       根据条件的条件判断结果执行
-----------------------------------------------------
if结构

单分支

if  条件判断;then
    执行的代码
    ......
fi

if  条件判断
then
    执行的代码
    ......
fi
----------------------------------------
双分支

if  条件判断;then
       代码
       ......
else
       代码
       ......
fi
--------------------------------------------------------------------
#!/bin/bash
read -p "请输入你要查找的用户名 "  username
echo $username

if [ -n "$username" ];then
  id  $username &> /dev/null
  if [ $? -eq 0 ];then
    echo "用户已经存在"
  else
    #usd $username
    useradd  $username
    echo $username  | passwd --stdin $username &> /dev/null
  fi
else
  echo "你必须要输入检查的用户名"
fi
----------------------------------------
多分支
if  条件判断1;then
    代码
    .......
elif   条件判断2;then
     代码
    .......

elif   条件判断N;then
       代码
       .......
else
      以上所有判断条件都不成立时执行的代码
fi
______________________________________________________________________

[   -e   /media/cdrom ]   ||     mkdir   /media/cdrom

----------------------------------------------------------------------
vim ping.sh
#!/bin/bash
if [   -n "$1"   ];then
  ping  -c  3   $1  &>  /dev/null
  if  [ $?  -eq   0  ];then
      echo  "主机  $1  在线"
  else
      echo  "主机  $1  不在线"
  fi
else
  echo "执行脚本格式如下:"
  echo "$0   ip地址"
fi
:wq

chmod  +x   ping.sh
./ping.sh   1.1.1.1

----------------------------------------------------------------------
根据输入的分数,判断成绩优劣
86~100  好
85-71     优秀
70-61     良好
60分       及格
小于60    补考
小于50分 留级

要考虑的问题:
不输入成绩怎么办?
 
成绩的分数范围只能在1-100之间  输人成绩时,超出成绩的访问怎么办?

输入的不是分数 是字母 怎么办?
----------------------------------------------------------------------
循环结构  (脚本中需要重复执行的代码,放在循环结构里执行)
                添加100个系统用户
                检查网段内不在线的主机192.168.1.0/24   
  $name

for 循环结构    (遍历数据)

for   变量名  in    值列表
do
       循环体
done

for    x   in    jim    120   lucy   a
do
      echo  "plj"
done

 

造数工具   seq   15
                 seq   11    37
                 seq   10  2  28

                 {1..100}
                 {a..z}
 --------------------------------------------------------------------
执行脚本是依次检查当前系统 这4个服务器的运行状态
httpd    crond     network   atd 
若服务没有运行 启动服务,若服务是运行着的,显示服务正则运行。


for  sername  in   httpd  crond  network  atd
do
      service   $sername   status


done

 

shell

标签:shell

原文地址:http://liangzai818.blog.51cto.com/10003446/1752210

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!