zoukankan      html  css  js  c++  java
  • Shell 编程(一)

    1. 为什么学习 Shell 编程?
    • 用 shell 来进行服务器的管理或维护
    • 对于大数据程序员来说,需要编写 shell 来管理集群

    1. Shell 是什么?
        Shell 是一个命令解释器,它为用户提供了一个 Linux 内核发送请求以便于运行程序的界面系统级程序,用户可以通过shell来启动、挂起、停止甚至是编写一些程序。

    2. Shell 脚本的执行方式(快速编程)
    • 脚本以 #!/bin/bash 开头
    • 脚本需要有可执行权限

    1. 脚本执行方式
    • 方式1(输入脚本的绝对路径或相对路径
      • 首先赋予脚本的 +x 权限
      • 执行脚本
    • 方法2(sh + 脚本)——> 不推荐
      • 说明:不用赋予脚本的 +x 权限,直接执行即可

    一、Shell 变量介绍

    • Linux Shell 中的变量分为:系统变量用户自定义变量
    • 系统变量:$HOME、$PWD、$SHELL、$USER 等等
    #!/bin/bash
    echo "PATH=$PATH"
    
    • 显示当前 shell 所有变量:set

    二、shell 基本语法

    • 定义变量:变量=值
    • 撤销变量:unset 变量
    • 声明静态变量:readonly变量,注意不能 unset

    1. shell 变量定义的规则

    • 变量名可以由字母、数字和下划线组成,但是不能以数字开头
    • 等号两侧不能有空格
    • 变量名称一般习惯为大写

    2. 将命令的返回值赋给变量

    • A=`ls -la` 反引号,运行该命令,并把结果返回给变量A
    • A=$(ls -la) 等价于反引号
    #!/bin/bash
    A=100            #定义变量
    echo "A=$A"
    unset A          #撤销变量
    echo "A=$A"
    
    readonly A=99    #定义和使用静态变量
    echo "A=$A"
    unset A      #静态变量不能unset
    echo "A=$A"
    
    RESULT=`ls -l/home`      #使用反引号
    echo $RESULT
    echo " "
    MY_DATE=$(date)     #使用$()来执行
    echo "date=$MY_DATE"
    

    小案例:可以把变量提升到全局环境变量,可供其他 shell 程序使用(之后再写)


    三、设置环境变量

    1. 基本语法

    • export 变量名=变量值 (功能:将 shell 变量输出为环境变量)
    • source 配置文件(功能:让修改后的配置信息立即生效)
    • echo $变量名(功能:查询环境变量的值)
    #!/bin/bash
    TOMCAT——HOME=/opt/tomcat      #定义一个自己的环境变量
    export TOMCAT——HOME      #输出环境变量
    

    注:可以让上述的环境变量在其他bash 文件中使用

    #!/bin/bash
    #在另一个shell文件中使用环境变量
    #使用我们自定的环境变量
    echo "tomcathome=$TOMCAT——HOME"
    
    1. 脚本下的多行注释
    :<<!
    !
    

    四、位置参数变量

      当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如: /myshell.sh 100 200,这就是一个执行 shell 的命令行,可以在myshell 脚本中获取到参数信息

    1. 基本语法

    • $n:n 为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号如:${10}
    • $*:代表命令行中所有参数,$*把所有参数看成一个整体
    • $@:代表命令行中所有参数,不过$@把每个参数区分对待
    • $#:代表命令行中所有参数的个数
    #!/bin/bash
    #获取到各个参数
    echo "$0 $1 $2"
    echo "$*"
    echo "$@"
    echo "参数个数=$#"
    

    五、预定义变量

      shell 设计者已经定义好的变量,可以直接在shell脚本中使用

    1. 基本语法

    • $$当前进程的进程号(PID)
    • $!后台运行的最后一个进程号
    • $?最后一次执行的命令的返回状态。若谷这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是那个数,由命令自己来决定),则证明上一个命令执行不正确了
    #该bash文件名为prevar.sh
    #!/bin/bash
    echo "当前的进程号=$$"      
    ./myshell.sh &      #后台方式运行 myshell.sh
    echo "最后进程的号=$!"
    

    六、运算符

    1. 基本语法

    • "$((运算式))" 或 "$[运算式]"
    • expr m + n
      • 注意expr运算符间要有空格
    • expr m - n
    • expr *,/,% ————> 乘,除,取余
      小案例:计算(2+3)× 4,请求出命令行的两个参数(整数)的和
    #!/bin/bash
    RESULT1=$(((2+3)*4))      #$((运算式))
    echo "result1=$RESULT1"
    
    RESULT2=$[(2+3)*4]      #$[运算式] 比较简单
    echo "result2=$RESULT2"
    
    TEMP=`expr 2 + 3`      #使用expr
    RESULT3=`expr $TEMP * 4`
    echo "result3=$RESULT3"
    
    #两个参数(整数)的和
    SUM=$[$1+$2]
    echo "SUM=$SUM4"
    
  • 相关阅读:
    Android获取手机内存和sd卡相关信息
    总结(创建快捷方式等)
    正则是个好东西
    Android自定义AlertDialog
    Eclipse生成author等注释
    day18 io多路复用
    json 模块
    re 模块
    random 模块
    hashlib 模块
  • 原文地址:https://www.cnblogs.com/BY1314/p/12879798.html
Copyright © 2011-2022 走看看