zoukankan      html  css  js  c++  java
  • shell简介

    1.1 什么是shell

    变量

    命令大礼包

    判断循环

    #重复性的工作 节约时间

    1.2 书写shell脚本

    mkdir -p /server/scripts   尽量把脚本都放在这个目录下

    #!/bin/bash

    这个脚本默认使用的命令解析器是 /bin/bash

    shell脚本之变量

    2.1 什么是变量

    未知数=====变量

    2.2  环境变量(全局变量)

    1. 大写
    2. 哪里都生效 都可以使用 LANG

    手动创建一个环境变量

    ##临时创建

    [root@dzc ~]# cd /server/scripts/

    [root@dzc scripts]# export OLDBOY=teacher

    [root@dzc scripts]# env |grep -i oldboy

    OLDBOY=teacher

    ###永久生效

    echo 'export OLDBOY=teacher' >>/etc/profile

    ###生效  

    source /etc/profile

    与用户环境变量有关的文件 目录

    /etc/profile、/etc/bashrc、

            /etc/profile.d/ 用户登录到系统会运行这个目录下的脚本

    用户环境变量配置文件

           ~/.bash_profile  ~/.bashrc 

     

    1.1 普通变量

    [root@dzc scripts]# a=100

    [root@dzc scripts]# echo $a

    100

    [root@dzc scripts]# sh show.sh

     

    [root@dzc scripts]# echo $a

    100

    [root@dzc scripts]# export a=100

    [root@dzc scripts]# sh show.sh

    100

    1.2 特殊变量

    [root@dzc scripts]# vim para.sh

    #!/bin/bash

     

    echo $1 + $2 |bc

    echo $1 - $2 |bc

    echo $1 * $2 |bc

    echo $1 / $2 |bc

    ~                                

    ~                                                             

    <L, 83C written 

    [root@dzc scripts]# sh /server/scripts/para.sh 10 5

    15

    5

    50

    2

    ## $# 表示参数的个数

    ## $? 上一个命令的执行后的状态   状态 0 表示正确 状态非0 表示错误

    1.3 向变量中存放内容

    #一问一答-交互

    [root@dzc ~]# read -t5 -p "请设置密码:" a

    -s 输入信息的时候 不显示

    -t 超时时间 timeout

    -p 提示

    [root@dzc ~]# vim /server/scripts/para.sh

    #!/bin/bash

    read -p "qingshuru 1num:" a

    read -p "qingshuru 2num:" b

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}'                                                                                                                      

    "/server/scripts/para.sh" 14L, 342C written                                                            

    [root@dzc ~]# sh /server/scripts/para.sh

    qingshuru 1num:20

    qingshuru 2num:2

    22

    18

    40

    10

    [root@dzc ~]# vim /server/scripts/para.sh

    #!/bin/bash

    read -p "qingshuru 1,2num:" a b

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}                                 

    <h" 15L, 376C written

    [root@dzc ~]# sh /server/scripts/para.sh

    qingshuru 1,2num:20 2

    22

    18

    40

    10

    1.4 编译安装软件

     切菜-备菜  ./configure

     炒菜    make

    上菜       make install

    1.5 如何判断一个文件是否存在?

    1. cat + $?
    2. ls + $?

    test -f  判断一个文件是否存在 -d 判断一个目录是否存在

    [root@dzc ~]# test -f /root/oldboy.txt

    [root@dzc ~]# echo $?

    1

    [root@dzc ~]# test -f /root/1.txt

    [root@dzc ~]# echo $?

    0

    [root@dzc ~]# [ -f /root/1.txt ]

    [root@dzc ~]# echo $?

    0

    [root@dzc ~]# [ -f /root/oldboy.txt ]     -f判断一个文件是否存在

    [root@dzc ~]# echo $?

    1

    [root@dzc ~]# [ -d /date ]             -d判断一个目录是否存在

    [root@dzc ~]# echo $?

    1

    [root@dzc ~]# [ -d /data ]

    [root@dzc ~]# echo $?

    0

    ### && 前一个命令执行成功(0) 在执行后面的命令

    [root@oldboyedu-40 ~]# [ -f /root/oldboy.txt ] && echo file exist

    file exist

    ### || 前一个命令执行失败(非0) 再执行后面的命令

    [root@oldboyedu-40 ~]# [ -f /root/tao.avi ] ||  touch /root/tao.avi 
    [root@oldboyedu-40 ~]# ls -l /root/tao.avi 
    -rw-r--r-- 1 root root 0 Sep 20 10:31 /root/tao.avi

    1.6 进行判断的方法

    >        大于               great than   -gt

    >=             大于等于       great equal  -ge

    <=

    ==             等于               equal      -eq

    !=              不等于                       ! -eq

    1.7 做出之前的计算器,进行两个数字的加减乘除 ,加上一个判断参数个数要等于2

    [root@dzc ~]# vim /server/scripts/para.sh

    #!/bin/bash

    if [ $# != 2 ];then

    echo 错误

    exit

    fi

     

    a=$1

    b=$2

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1+num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1-num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1*num2}'

    awk -vnum1=$a -vnum2=$b 'BEGIN{print num1/num2}'

    ~                                                                                                                                                                                                                                        

    [root@dzc ~]# sh /server/scripts/para.sh 10 2

    12

    8

    20

    5

    1.8 显示脚本的执行过程

    sh -x /server/scripts/for.sh

    第2章 for循环

    2.1 for循环格式

     for 名字in 列表

    do

       执行的命令

    done

    2.2 ###修改系统时间为0501到0520,然后创建文件的名字为2017-05-01.txt

    for hd in {01..20}

    do

      date -s "201705$hd"

      touch /tmp/1/$(date +%F).txt

    done

    2.3 优化linux开机启动项目-for循环方法

    [root@dzc ~]# vim /server/scripts/for.sh

    for hd in $(chkconfig|egrep -v "sshd|crond|network|rsyslog|sysstat"|awk '{print $1}')

    do

       chkconfig $hd off

    done

  • 相关阅读:
    Selenium 疑问之一:WebDriver 获得弹出窗口(转)
    Selenium 疑问之三:Selenium2.0 对于Wrapped元素的click()不起作用怎么办?
    [转]网站性能工具Yslow的使用方法
    Hudson + Ant + SVN + Tomcat配置详解
    Selenium 疑问之二:如何使页面滚动条移动到指定元素element的位置处?
    【转】组合测试法中的全对偶测试法
    Ant 之property 总结
    [转载]使用Selenium2测试含有iframe的Ajax网页
    Nginx反向代理WebSocket链接失败问题
    WebSocket语法糖
  • 原文地址:https://www.cnblogs.com/dzc-/p/9754743.html
Copyright © 2011-2022 走看看