zoukankan      html  css  js  c++  java
  • linux全套 | Shell编程 | 16

    Shell bash

    首先shell是什么?

    - 解释器,启动器
    -解释器: 
    解释器有两种解释的方式
    1) 用户交互输入: 就是用户输入一行,机器执行一行
    2) 文本文件输入: 就是把要执行的 shell 命令写在一个文件中,然后执行
    
    source 脚本文件
    . 脚本文件
    

    如何在文件中定义脚本解释器?

    - #!/bin/bash
    - #!/usr/bin/python
    
    在 脚本文件 中第一行写上面的语句,就是交代了该脚本文件使用什么解释器执行
    否则就需要手动写
    source/. 脚本文件
    python 脚本文件
    注意: 在此之前需要给文件加上可执行权限 chmod +x 脚本文件
    

    shell中也可以定义函数,下面是shell中定义函数的一个简单样式

    文本流 & 重定向

    重定向

    默认是标准的输入输出,现在自己手动指定输入输出的文件
    >,>>,>& 重定向输出(1>,2>)
    <,<<,<<<重定向输入
    
    1>,1>>: 标准输出重定向
    2>,2>>: 错误输出重定向
    0<,0<<,0<<<: 标准输出重定向
    
    
    >/< 完全重写
    >>/<< 追加
    
    程序自身都有I/O
    0: 标准输入
    1: 标准输出
    2: 错误输出
    
    &>,>& 
    将标准输出和错误输出都重定向到一个文件中
    ls -l /god /usr >& ls.out
    
    

    输出重定向使用

    输入重定向使用

    变量

    shell的变量的作用域如下

    - 本地
    - 局部
    - 位置
    - 特殊
    - 环境
    

    本地变量

    当前shell拥有(其他shell无法使用),生命周期随shell(重启shell后会消失 )
    
    name=god
    echo $name
    

    局部变量

    只能local用于函数
    函数(){
    	...
    	local val=100
    	...
    }
    

    位置变量

    - $1,$2,${11}
    传递的第n个参数
    
    - $#: 位置参数个数
    - $*/$@: 参数列表
    

    特殊变量

    - $$: 当前shell的pid
    - $?: 上一个命令退出的状态
    0:成功
    other: 失败
    

    环境变量

    export 变量名
    source 脚本文件
    
    下面是配置python环境变量的例子
    
    cd /etc/profile.d  进入全局环境变量的脚本目录
    vim python3.sh  编写环境变量的脚本
    =====python3.sh=====
    export PYTHON_HOME=/opt/python3.7
    export PATH=${PYTHON_HOME}/bin:$PATH
    ====================
    source /etc/profile  更新全局的配置脚本
    

    引用 & 命令替换

    引用

    单引号' : 弱引用,不会解析变量(不能进行转义)
    双引号" : 强引用,会解析变量
    
    注意: 引用输出后会删除引号
    

    命令替换

    `` 或 $()
    `ls -l /`
    $(ls -l /)
    
    注意: 命令替换是可以进行扩展的 $($()....)
    

    退出状态 & 逻辑判断

    退出状态

    echo $?
    - 0 成功退出
    - other 退出失败
    

    逻辑判断

    - command1 && command2
    - command1 || command2
    

    表达式

    算术表达式

    (1)
    a=10
    b=20
    let c=$a+$b
    
    (2) 
    $(()) 
    c=$((a+b))
    
    

    条件表达式

    test,[]
    
    - [表达式]
    - test 表达式
    
    可以使用 help test 来查看帮助
    

    练习题

    - 添加用户
    - 用户密码同用户名
    - 静默运行脚本
    - 避免捕获用户接口
    - 程序自定义输出
    

    流程控制

    - if
    if ...;
    then ...;
    elif ...;
    else ...;
    fi
    
    经典格式: if [ 表达式 ] ; then 表达式 ; else 表达式 ; fi
    if [3 -gt 8] ; then echo "ok" ; else echo "not ok" ;
    
    - while
    while 条件表达式;
    do
    ...
    done
    
    - for
    步进for:  for (( i=1;i<10;i++ )); do echo $i ; done
    增强for: for i in "bj sxt" "sh sxt" "gz sxt"; do echo $i; done
    
    for (());do
    ...
    done
    
    for i in ...;do
    ...
    done
    
    
    - case
    

    练习题

    - 用户给定路径
    - 输出文件大小最大的文件
    - 递归子目录
    

    练习题

    循环按行输入文件内容(要求多种方式)
    

  • 相关阅读:
    JZOJ.2117. 【2016-12-30普及组模拟】台风
    团队合作
    长沙游记
    统计
    html....
    OI之路
    三鑫普及组模拟赛
    牛顿迭代法
    台风
    gcd
  • 原文地址:https://www.cnblogs.com/Rowry/p/14442812.html
Copyright © 2011-2022 走看看