栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell——与linux系统对话

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell——与linux系统对话

Shell脚本 1. Shell概述
  • 系统简易结构

  • shell是一个命令行解释器,接收应用程序/用户命令,调用操作系统内核

2. Shell解析器
  • 查看解释器

    sudo cat /etc/shells
    

    查看环境变量SHELL

    echo $SHELL
    /bin/bash
    
3. Shell脚本入门
  1. 脚本格式

    脚本以#!/bin/bash开头(指定解释器)

  2. 第一个脚本:helloworld

    mkdir datas
    cd datas
    
    touch helloworld.sh
    vim helloworld.sh
    
    #!/bin/bash
    
    echo "hello world"
    
    # 执行脚本
    sh helloworld.sh
    ./helloworld.sh # 需要执行权限
    bash helloworld.sh
    
  3. 多命令处理

    touch batch.sh
    
    batch.sh
    #!/bin/bash
    
    touch /home/yxx/shell_datas
    echo "hello" >> 1.txt
    
    #执行脚本
    bash batch.sh
    
4. Shell中的变量
  1. 常用系统变量

    $HOME $PWD $SHELL $USER等

  2. 定义

    1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
    2. 等号两侧不能有空格
    3. bash中,变量默认类型都是字符串类型,无法直接进行数值运算
    4. 变量的值如果有空格,需要使用双引号或单引号括起来
  3. 全局变量

    export 变量

  4. 特殊变量:$n

    1. 基本语法

      $n,n为数字,$0代表脚本名称,$1-$9代表第一到第九个参数

  5. 特殊变量:$#

    1. 基本语法

      表示变量个数

  6. 特殊变量:$* $@

    1. 基本语法

      $*,这个变量代表命令行中所有的参数,将所有参数看成一个整体

      $@,这个变量代表命令行中的所有参数,把每个参数区分对待

  7. 特殊变量:$?

    1. 基本语法

      $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,证明上一个命令执行失败

5. 运算符
  1. 基本语法
    1. $((运算式)) 或$[运算式]
    2. expr +, -, *, /, %加、减、乘、除、取余 (expr运算符间要有空格)
6. 条件判断
  1. 基本语法

    [ condition ]condition前后要有空格

  2. 常用判断条件

    1. 两个整数之间比较

      符号意义
      -lt小于 less than
      -le小于等于 less equal
      -eq等于 equal
      -gt大于 greater than
      -ge大于等于 greater equal
      -ne不等于 not equal
      =字符串比较
    2. 按照文件权限进行判断

      符号意义
      -r有读的权限
      -w有写的权限
      -x有执行的权限 execute
    3. 按照文件类型进行判断

      符号意义
      -f文件存在并且是一个常规的文件 file
      -e文件存在 existence
      -d文件存在并是一个目录 directory
  3. 多条件判断

    &&(逻辑与)表示前一条命令执行成功时,才执行后一条命令;||(逻辑或)表示前一条执行失败了,才执行后一条。

7. 流程控制(重点)
  1. if判断

    1. 基本语法
    if [ 条件判断式 ];then
      程序
    fi
    #或者
    if [ 条件判断式 ]
    then
        程序
    fi
    注意事项:
    1. [ 条件判断式 ],中括号和条件判断式之间必须要有空格
    2. if后要有空格
    
    1. 实例
    #!/bin/bash
    if [ $1 = "1" ]
    then
            echo "hello 1"
    elif [ $1 -eq 2 ]
    then
    		echo "hello 2"
    fi
    
  2. case语句

    1. 基本语法

      case $变量名 in
      "值1")
      	如果变量值等于值1,执行程序1
      ;;
      "值2")
      	如果变量值等于值2,执行程序2
      ;;
      *)
      	defalut执行命令
      ;;
      esac
      
  3. for循环

    1. 基本语法

      for ((初始值;循环控制条件;变量变化))
      do
      	程序
      done
      
    2. 实例

      #!/bin/bash
      
      s=0
      for((i=0;i<=100;i++))
      do
      	s=$[$s+$i]
      done
      echo $s
      
    3. 基本语法

      for 变量 in 值1 值2 值3 ..
      do
      	程序
      done
      
    4. 实例

      #!/bin/bash
      
      for i in $*
      do
      	echo "output $i"
      done
      
  4. while循环

    1. 基本语法

      while [ 条件判断式 ]
      do 
      	程序
      done
      
    2. 实例

      #!/bin/bash
      
      s=0
      i=1
      while [ $i -le 100 ]
      do
      	s=$[$s + $i]
      	i=$[$i + 1]
      done
      echo $s
      
8. read读取控制台输入
  1. 基本语法

    read(选项)(参数)
    选项:
     	-p:指定读取值时的提示符
     	-t:指定读取值时等待的时间(s)
    参数:
    	变量:指定读取值的变量名
    
  2. 实例

    #!/bin/bash
    
    read -t 7 -p "Enter your name in 7s" NAME
    echo $NAME
    
9. 函数
  1. 系统函数

    1. basename基本语法

      basename[string/ pathname][suffix]
      # basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来。
      
    2. 实例

      basename /home/yxx/shell_data
      
    3. dirname 返回文件上一层绝对路径

  2. 自定义函数

    1. 基本语法

      [function]funname[()]
      {
      	Action;
      	[return int;]
      }
      funname
      
    2. 案例

      #!/bin/bash
      
      function sum()
      {
      	s=0;
      	s=$[$1+$2]
      	echo $s
      }
      read -p "input your parameter1 :" p1
      read -p "input your parameter2 :" p2
      sum $p1 $p2
      
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/599876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号