zoukankan      html  css  js  c++  java
  • shell脚本编程之变量简介及脚本执行过程

    脚本变量简介

    变量类型:字符型、数值型、真、假;事先确定数据的存放格式和长度;
    变量存放在内存空间;
    编译型语言,没有额外的处理逻辑,属于强类型语言;
    脚本型语言,可以有解释器控制;所以,可以是弱类型语言;
    强类型:变量在使用前,必须事先声明,甚至还需要初始化(给一个初始值,如果没给一个原始值,里面是随机数);
    弱类型:变量用时声明,甚至不需要区分类型(默认为字符串);
    变量赋值:VAR-NAME=VALUE;
    
    bash shell变量类型:
    环境变量
    本地变量(局部变量),局部变量不一定都是本地变量
    位置变量
    特殊变量(bash shell内置的;系统变量)
    
    本地变量:VAR-NAME=VALUE;作用域为整个bash进程;
    局部变量:local VAR-NAME=VALUE;作用域为当前代码段;
    环境变量:export VAR-NAME=VALUE;作用域为当前shell进程及其子进程;
    位置变量:$1(第一个位置变量)、$2(第二个位置变量)...
    特殊变量:$?(保存上一个命令执行状态返回值);程序状态返回代码(0——255);0表示正确执行;1——255表示错误执行;
    
    执行bash shell脚本,就相当于执行一个进程,如果进程关闭,则变量就无效了;
    脚本在执行时,会启动一个当前shell的子shell进程;命令行中启动的脚本会继承当前shell环境变量;系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量;
    
    变量引用:${VAR-NAME},当变量名不造成混淆时,括号可省略;
    撤销变量:unset VAR-NAME(不要加$符号);
    查看当前shell中的变量:set(包括环境变量和本地变量);
    查看当前shell中的环境变量:export、printenv、env;

    变量默认都属于字符串,要想使变量变成整数型变量需要使用:let VAR=number 往原有变量中添加新的数值: [root@localhost ~]# ANIMALS=pig [root@localhost ~]# echo $ANIMALS pig [root@localhost ~]# ANIMALS=$ANIMALS:goat [root@localhost ~]# echo $ANIMALS pig:goat 注意: 1、变量名称只能包含字母、数字和下划线,并且不能以数字开头 2、不能和系统中已有的环境变量重名 3、最好做到见名知意

    脚本执行过程:

    脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序;
    
    脚本中放的都是命令,并不是可执行的程序,不是对应的二进制符号,所以直接提交到内核执行的话,内核是理解不了脚本中的命令的,内核理解的是ELF格式;
    ELF:可执行的、可链接的文件格式;linux内核只能识别ELF格式进行执行,写完的脚本是ascii,内核是执行不了的;
    要想内核能够读懂脚本,需要内核开启脚本解释器,添加shebang机制;
    在脚本中的第一行添加:#!/bin/bash        指定解释器的位置;
    shebang:指定程序的魔数;
    写完的脚本需要加执行权限才能执行,或者使用解释器执行:bash SCRIPT-NAME;脚本名需要以 .sh 为后缀;
    

    小技巧

    输出重定向:
    >:输出覆盖重定向
    >>:追加重定向
    2>:错误重定向
    2>>:错误追加重定向
    &>:同时重定向
    /dev/null:软件设备,数据黑洞,可以把命令的输出结果放到数据黑洞里面,不在屏幕上打印
    执行脚本时,要想命令的执行结果不在屏幕上打印可以使用重定向配合数据黑洞:&>/dev/null
  • 相关阅读:
    ie浏览器设定主页修改
    诺基亚5800通讯录倒入到dopod的联系人中去的解决办法
    局域网中根据IP地址反查主机的名称(C#)
    U盘维修
    查找xml文件中某接点的值
    如何更改任务栏颜色
    如何给一个div赋值(改变div原来的值)
    explicit的作用
    重建二叉树
    常函数
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/11982127.html
Copyright © 2011-2022 走看看