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
    

    练习题

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

    练习题

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

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/Rowry/p/14442812.html
Copyright © 2011-2022 走看看