本文共 1694 字,大约阅读时间需要 5 分钟。
第五课-第二讲05_02_bash脚本编程之一 变量、变量类型等
grep 搜索结果是浪费和占用大量的CPU资源
fgrep : fast grep 不支持正则表达式,所以速度快1.shell脚本编程
编译器,解释器编程语言:
机器语言(01代码)汇编语言(机器可以识别人不可以)高级语言(接近人类的思考特性,但不是人类的自然语言,也不是机器语言。所以需要编译器)静态语言(编译型语言,需要编译器编译在执行前全部转换成可用执行格式,强变量类型语言.如 C C++ java)动态语言(解释型语言,通常是弱类型语言,需要解释器,解释器本身是静态语言开发的。执行时在转换,边执行边转换,on the fly。如:asp,jsp,php,shell,python,perl)。perl是面向过程的,python面向对象的面向对象:抽象成对象,并定义对象间的动作。大型应用程序,java,Python.Perl,C++
面向过程:编程立足点问题解决过程本身,小型程序。shell,Perl,C变量:内存空间,命名的内存空间
内存:是编址的存储单元进程:变量类型:事先定义好数据的存储格式和长度字符型整型浮点型布尔型变量赋值: VAL_NAME=VALUE
shell:弱类型编程语言
强类型语言:变量在使用前必须先声明,甚至还需要初始化。不初始化的话里面存储的是随机数。
bash变量类型:
环境变量:当前shell进程及其子进程都有效export VAL_NAME=VALUE本地变量:VAL_NAME=VALUE,整个bash进程有效。bash结束则失效局部变量:local VAL_NAME=VALUE 只对定义他的代码段有效位置变量:$1,$2,$3特殊变量或者叫系统变量(bash内置的用来保持某些特殊数据的变量)$? 保存上一个命令执行状态返回值,程序执行后有2类返回值,0表示正确执行,1-255都是错误执行,不同数据代表错误类型不同。1,2,127系统预留有特殊意义。(这里有2个概念,程序执行结果,程序执行返回代码)撤销变量:unset VAL_NAME 就可以了
查看变量:查看当前shell中变量
set查看当前shell的环境变量: printenv ,env,export 三个命令都可以 输出重定向到一个特殊位置, &>/dev/null, 设备,软件设备,软件模拟的设备。bit bucket 位桶,数据黑洞.当我们不关心命令的执行结果时就把结果输出重定向到位桶里。变量替换:也叫引用变量,$(VAL_NAME)或者$VAL_NAME,但是能引起变量名混淆的必须要加小括号。如:ANIMAL=pigecho "There are some $ANIMALs"---怎么用是错误的,系统把ANIMALs当成了变量名echo "There are some ${ANIMAL}s"----此时必须要用花括号echo 'There are some ${ANIMAL}s'----此时用单引号就把单引号里面的内容原原本本的输出,不做变量替换。因为单引号是强引用。单引号是强引用---变量不做替换
双引号是弱引用---变量替换脚本在执行时会启动一个子shell进程
命令行中启动脚本会继承当前shell环境变量系统自动启动的脚本(跟命令行无关跟当前shell无关,或者叫非命令行启动)就需要自我定义需要的环境变量编程能力:脚本编程脚本:命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序。
1)shebang:指定程序的魔数。脚本第一行必须是 #!/bin/bash
“# 开头是注释行,不执行”2)脚本写好后要给执行权限。+x ,才可以执行3)不给执行权限的话,要bash first.sh作为bash命令的参数来执行4)路径,一是用可以找到该脚本的绝对路径或者修改环境变量PATH,加入该脚本所在的路径转载于:https://blog.51cto.com/13788421/2141984