zoukankan      html  css  js  c++  java
  • Linux第六天 shell

    shell脚本必须以#!/bin/bash/开头 (相当于c语言 #include<stdio.h>),shell脚本文件后缀为sh,没有也行,Linux对后缀没明确要求

    脚本需要有可执行权限(chmod赋予权限),那样可以用./shell文件 执行,不然就用sh shell文件 执行(相对绝对路径都可)

    Linux Shell 中的变量分为,系统变量和用户自定义变量。
    系统变量:$HOME、$PWD、$SHELL、$USER 等等,比如: echo $HOME 等等..

    显示当前 shell 中所有变量:set

    定义变量用 变量名=值,等号两侧不能有空格,变量名一般用大写字母定义(只是规范,小写的也可以运行),输出变量需要加上$输出,例:A=100 echo $A

    撤销用unset 变量名

    readonly定义静态变量 静态变量不可撤销

    注释:单行用#,

    多行用

    :<<! 

    注释内容

    !

    用反引号获取返回值 例 A='date',A=$(date) 等价于反引号

    设置环境变量(定义全局变量在在/etc/profile文件中写)

    1) export 变量名=变量值 (功能描述:将 shell 变量输出为环境变量/全局变量)
    2) source 配置文件 (功能描述:让修改后的配置信息立即生效)
    3) echo $变量名 (功能描述:查询环境变量的值)

    位置参数变量
    介绍:当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
    比如 : ./myshell.sh 100 200 , 这个就是一个执行 shell 的命令行,可以在 myshell 脚本中获取到参数信息(相当于其它语言的函数传参)

    语法:$n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用
    大括号包含,如${10})
    $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
    $@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
    $#(功能描述:这个变量代表命令行中所有参数的个数)

    运算符

    基本语法
    1) “$((运算式))”或“$[运算式]”或者 expr m + n
    2) 注意 expr 运算符间要有空格, 如果希望将 expr 的结果赋给某个变量,使用 ``

    3) expr m - n
    4) expr *, /, % 乘,除,取余

    #!/bin/bash
    #案例 1:计算(2+3)X4 的值
    #使用第一种方式
    RES1=$(((2+3)*4))
    echo "res1=$RES1"
    #使用第二种方式, 推荐使用 RES2=$[(2+3)*4] echo "res2=$RES2"
    #使用第三种方式 expr TEMP=`expr 2 + 3`
    RES4=`expr $TEMP * 4`
    echo "temp=$TEMP"

    条件判断
    判断语句
     基本语法
      [ condition ](注意 condition 前后要有空格)
      #非空返回 true,可使用$?验证(0 为 true,>1 为 false)
     应用实例
      [ asd ] 返回 true
      [ ] 返回 false
      [ condition ] && echo OK || echo notok 条件满足,执行后面的语句

    判断语句
        常用判断条件
      1) = 字符串比较
      2) 两个整数的比较
      -lt 小于
      -le 小于等于 little equal -eq 等于
      -gt 大于
      -ge 大于等于
      -ne 不等于

      3) 按照文件权限进行判断
      -r 有读的权限
      -w 有写的权限
      -x 有执行的权限
      4) 按照文件类型进行判断
      -f 文件存在并且是一个常规的文件
      -e 文件存在
      -d 文件存在并是一个目录

    if判断基本语法

      if [ 条件判断式 ]
      then
      代码
      elif [条件判断式]
      then
      代码
      fi

    case语句

     for循环

     while语句(while 和 [有空格,条件判断式和 [也有空格)

    #!/bin/bash
    #案例 1 :从命令行输入一个数 n,统计从 1+..+ n 的值是多少?
    SUM=0
    i=0
    while [ $i -le $1 ]
    do
    SUM=$[$SUM+$i]
    #i 自增
    i=$[$i+1]
    done
    echo "执行结果=$SUM"

    read 读取控制台输入
    基本语法
    read(选项)(参数)
    选项:
    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
    参数
    变量:指定读取值的变量名

    #!/bin/bash
    #案例 1:读取控制台输入一个 NUM1 值
    read -p "请输入一个数 NUM1=" NUM1
    echo "你输入的 NUM1=$NUM1" #案例 2:读取控制台输入一个 NUM2 值,在 10 秒内输入。
    read -t 10 -p "请输入一个数 NUM2=" NUM2
    echo "你输入的 NUM2=$NUM2"

    自定义函数

    #!/bin/bash/
    #定义函数 getSum
    function getSum() {
    SUM=$[$n1+$n2]
    echo "和是=$SUM" }
    #输入两个值
    read -p "请输入一个数 n1=" n1
    read -p "请输入一个数 n2=" n2
    #调用自定义函数
    getSum $n1 $n2
  • 相关阅读:
    mysql修改密码策略
    YUM方法安装mysql5.7版本
    redis-5.0.5安装(linux centos)
    centos7 安装php7扩展
    Linux df
    Spotlight监控工具使用
    Linux 安装iostat命令
    转载:数据库连接池到底应该设置多大?
    cqlsh 一个错误
    Linux Top命令详解
  • 原文地址:https://www.cnblogs.com/zhaoyids/p/14999025.html
Copyright © 2011-2022 走看看