博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五课-第二讲05_02_bash脚本编程之一 变量、变量类型等
阅读量:6688 次
发布时间:2019-06-25

本文共 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=pig
echo "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

你可能感兴趣的文章
Spring MVC标签<mvc: annotation-driven />小结 原
查看>>
HashMap和Hashtable的区别
查看>>
Oracle EBS-SQL (INV-5):检查期间拉式物料领用记录数.sql
查看>>
Python之with语句原理
查看>>
在Window环境下多线程与CPU资源分配原则
查看>>
20170303新的开始
查看>>
Python--day25--复习(单继承和多继承的总结)
查看>>
Python--day39--进程池原理及效率测试
查看>>
@Html.EditFor()不能添加“只读”html属性;以及disable属性的坑
查看>>
Logger日志级别说明及设置方法、说明
查看>>
7-1 列出连通集 (25 分)
查看>>
Mybatis之Mapper动态代理
查看>>
【转】楼天城楼教主的acm心路历程(作为励志用)
查看>>
vw、vh、vmin、vmax 的含义
查看>>
04.设计模式_抽象工厂模式
查看>>
vue项目搭建
查看>>
c lang codesnippets
查看>>
Machine Learning
查看>>
Ext概述
查看>>
LeetCode – Refresh – Populating Next Right Pointers in Each Node I and II
查看>>