2020-05-25 bash脚本编程 一 变量、变量类型等


shell编程

编译器,解释器

编程语言:机器语言(0/1)、汇编语言、高级语言:

    静态语言:编译型语言:有一个程序开发环境,不需要借助额外的二进制程序,可以直接写代码,编译器将其直接转换成二进制后可以独立运行的编程语言(不单独需要解释器,可以自我独立执行)。在程序执行之前,编译过程是事先全部转换成可执行格式,只有完全转换完成后程序才能执行。

解释器本身通常都是静态语言开发的

            通常是强类型(变量):变量在使用前,必须事先声明类型,甚至还需要初始化(给一个原始值,随机数,数值要初始化为0,字符串初始化为空(null))

             如:C、C++、JAVA、C#

            关键字:能够直接被编译器转换成能够被机器识别的机器代码或者机器指令

    动态语言:解释型语言(on the fly):不需要转换成二进制格式,解释器解释一条执行一条,边解释边执行,程序只有在执行的时候才进行转换。

             通常是弱类型:变量用时声明,甚至不区分类型(默认为字符串

             如:ASP、PHP、SHELL、python、perl

显式转换,隐式转换(变量转换类型在不同,编译型语言在编译时转换,解释型语言在解释时转换)

bash:因此我们如果要运行bash脚本,系统上必须有bash本身这个可执行程序,bash此时叫脚本解释器

面向过程:SHELL,C。把编程着眼点主要在于问题解决过程本身(linux内核是使用面向过程的C语言研发的)

面向对象:JAVA,Python,perl,C++。把整个要实现的项目抽象成一个个对象,并且定义对象之间的动作

变量:命名的内存空间(进程内部维护有映射表,变量名称对应内存的起始地址)

内存:编址的存储单元(物理内存的每一个字节都有一个全局的唯一地址)

10,如果存储为字符需要16bit(1和0分别对应两个ASCⅡ码表中的两个字符,每个字符需要一个字节,8bit)

10,如果存储为数值,二进制为1010,只有4bit,而计算机最小存储单位是字节,因此最终需要8bit

因此究竟把10存储为字符还是数值,好确定所需的内存空间,则需要确定变量类型。

变量类型:事先确定数据的存储格式长度

      字符型

      数值型:整型

                    浮点型:带小数点精度

       真假/逻辑/布尔型:逻辑:1+1>2

                             逻辑运算:与(有假即假,无假为真)、或(有真为真,无真为假)、非(取反,!)、异或(操作数相同则为假,不同则为真,真真得假,假假得假,真假得真,假真得真)

在计算机中,逻辑运算是通过电极管完成运算的。

短路逻辑运算:与,有一个为假则为假。

                          或,有一个为真则为真。

对于静态语言,必须要事先确定所用到的每一个变量的变量类型。如果数据在规定内存内保存不下,就会溢出。

编程能力:脚本编程

变量赋值:VAL_NAME=VALUE

bash变量类型(根据变量本身的作用范围以及变量本身的表示形式这个不同的标准分类):

         环境变量:作用域为当前shell进程及其子进程

                     export VARNAME=VALUE  "导出"

                     或拆分成 VARNAME=VALUE

                                     export VARNAME

脚本在执行时会启动一个子shell进程:

         命令行中启动的脚本会继承当前命令行的环境变量

         系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量

         本地变量(子概念:局部变量): bash

                    引用变量:${VARNAME}(括号在大多数情况下可省略,指代不清的时候不可省)

                    本地变量:(set) VARNAME=VALUE(作用域为整个bash脚本进程中都可以引用)

                    局部变量:local VARNAME=VALUE(变量是局部的,作用域为当前代码段) 

         位置变量:$1,$2,...

         特殊变量(bash内置的保存特殊数据的特殊变量,也称系统变量)

                  $?:上一个命令的执行状态返回值

*程序执行,有两类返回值:程序执行结果  ``

                                             程序状态返回代码(0-255):0:正确执行

                                                                                                    1-255:错误执行(代表各种错误:1,2,127系统预留了,有特殊的错误意义。命令错误,参数错误等)

撤销变量:unset VARNAME

查看当前shell中的变量:set (查看所有变量)

       查看当前shell中的环境变量:printenv

                                                      env

                                                      export

特殊变量和位置变量无法查看

对于字符串来说,如果要改变其值,可以在后面附加一个新内容,用“:”连接

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

单纯的命令行保存后是一个ASCⅡ文件,是无法执行的,linux只能执行ELF格式文件

shebang:魔数 magic number

      #!/bin/bash(#!接解释器路径,脚本是什么格式的脚本,解释器在什么位置,脚本的第一行必须这么写)

#注释行,不执行

chmod +x script.sh将文件的权限更改为可执行权限,这将使我们能够通过以下方式执行脚本:

./script.sh

脚本无执行权限也可以执行,比如将脚本名写在bash后面,这样就是作为bash的一个参数来执行而不是作为一个脚本来执行,但是也可以执行,但是要想独立执行,必须给执行权限

变量名称:1、只能包含字母,数字和下划线,并且不能以数字开头

                  2、不应该跟系统中已有的环境变量重名

                  3、最好做到见名知义 

Shell脚本入门指南:学会自动化你的日常任务 - 知乎 (zhihu.com)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352