Bash shell脚本编程知识点如下(初学,不全,欢迎讨论补充):

shell简介

脚本的简单介绍

变量和引用

算术运算

交互式编程

选择判断

条件测试

循环

函数

shell简介

shell是一种具备特殊功能的程序,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令,并把它送入内核去执行,shell分为图形界面和命令界面(我们操作的window系统就是一种图形化shell,我们要学的bash也是she一种命令界面的shell)。

shell与内核和用户的关系图如下:

bash shell功能:

提供交互式接口:

命令行展开:~,{}

命令别名:slias,unalias

命令:history

globbing:*,?,[],[^]

快捷键

命令补全:$PATH

命令hash

路径补全

提供编程环境:面向过程,脚本编程

程序:语句和表达式

流程:

顺序执行

选择执行

循环执行

编程模型:面向过程,面向对象

程序=指令+数据

面向过程:以指令为中心组织数据。bash shell就是一种面向过程的编程

面向对象:以数据为中心组织指令。

程序运行模型:

编译运行:

源程序 --> 预处理 --> 编译 --> 汇编 --> 链接

解释运行:bash就是解释运行的

解释器 /bin/bash

源程序

脚本的第一行:shebang

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

脚本的简单介绍

脚本语言的好处就是简单、易学、易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情。它适用于系统管理、文本处理等方面完成特定功能的小程序。

  1. 书写格式;shell脚本格式如下:

    #!/bin/bash 必须顶格写,指明解释器类型。除了第一行#!指明解释器类型之外,所有的#带头的shell都会认为是注释,不予执行。

  2. 执行与检测

    -n 语法测试,测试是否有语法错误,刚学shell建议执行前使用-n测试一下,保证语法是否错误。

    -x 模拟执行,可以显示该脚本执行中的每个步骤。方便查找错误。

    带加号的是执行的步骤,不加-x不会显示上图带加号的行。

变量和引用:

变量是命名的地址空间,内存是编址的存储单元:

变量用于保存有用信息,如路径名、文件名、数字等,Linux用户使用变量定制其工作环境,使系统获知用户相关的配置。变量本质上是存储的一个或多个计算机内存地址。

变量类型:

本地变量:只对当前shell进程有效,对当前shell之外的其他shell(包括其父、子等)无效。而且随着shell进程的消亡而无效。

局部变量:仅对当前shell进程中的某段代码空间内有效;通常用于函数本地程序。

环境变量:对当前shell进程及其子shell进程有效;

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

特殊变量:$?,$0,$#,$$,$*,$@

变量赋值与引用:

本地变量:无需事先声明可直接使用;例如你家的东西直接拿来使用,而别人的东西你要说下才能使用一样。

变量赋值:[set] VAR_NAME=VALUE set是可以省略的,直接变量名=变量值 赋值完成。

变量引用:${VAR_NAME}或$VAR_NAME {} 花括号是可省略的,在变量后面跟着不是变量名的时候需要使用

直接赋值直接使用。花括号这时候是可省略的

" ":弱引用,其中的变量会被替换,大部分字符都看作普通字符。例外还有\ $ `三个特殊字符可以使用,无需转义。

' ':强引用,任何字符都看作普通字符,除单引号自身。所以无法在两个单引号之间包含单引号,用\转义也不行。

· · :命令引用:键盘TAB键上面字符,引用命令的。

强引用与弱引用的结果是不一样的

set:显示所有本地变量。

unset VAR_NAME:销毁一个变量。

环境变量

变量赋值:

export VAR_NAME=VALUE

declare –x VAR_NAME=VALUE

export VAR_NAME:可以将本地变量赋值为环境变量,前提是本地变量必须存在。也不能加$符号

declare –x VAR_NAME:同上。

本地变量到环境变量转换。

变量引用:${VAR_NAME}或$VARNAME 同本地变量引用。花括号也可以省略。

注意:bash内建了许多环境变量

HISTSIZE,HISTFILE,HISTCONTROL,PATH,HOME,SHELL

export:显示所有环境变量;printenv,env 同样可以显示

unset VAR_NAME:销毁环境变量

只读变量:

readonly VAR_NAME 将环境变量变为只读变量

declare –r VAR_NAME 同上。

位置参数变量:经常在交互式脚本使用。输入的第一位数为$1,

变量命令法则:

  1. 不能带程序中的关键字:if,elif,fil,then,for,…
  2. 不能使用数字、字母或下划线,而且不能以数字开头;
  3. 见名知义;一看到变量就知道那个变量的意思。

Bash shell编程的语法知识点(1)的更多相关文章

  1. linux 10 -Bash Shell编程

    二十三. Bash Shell编程:     1.  读取用户变量:     read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...

  2. abc高级bash shell编程

    http://www.pythoner.com/122.html     abc高级bash shell编程

  3. linux之shell编程基本语法

    Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...

  4. Bash Shell编程简记

    Shell编程简记 经常在linux环境下开发的同学,难免要使用shell的一些命令或者编写小的脚本,我这里也总结和整理下,自己对Shell的理解和常用的一些shell脚本. 按照目录分为如下3个节: ...

  5. 【shell编程基础0】bash shell编程的基本配置

    前面一篇“shell编程之变量篇”主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash shell下的一些基本配 ...

  6. Bash Shell编程要点小结

    一.case命令 case variable invalue1) command(s);; value2) command(s);; *) command(s);; esac 如果case变量没有被匹 ...

  7. shell编程基础语法

    创建文件:touch aaa.sh 把文件变成可执行的命令: chmod +x /Users/dream-mac/Desktop/aaa.sh (这里是文件路径,如果在当前路径下,只需要把文件名写到这 ...

  8. GNU Bash Shell 编程图解笔记

    bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写.1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括 ...

  9. shell编程:基本语法

    要掌握一门语言,就要先掌握它的语法.如同C语言一般,shell也有自己的语法. 变量 按照惯例,Shell变量通常由字母加下划线开头,由任意长度的字母.数字.下划线组成.有两种类型的Shell变量: ...

随机推荐

  1. spring mvc 复杂参数注入

    过了这么久,又重新把博客拾起来了 来上海工作也已经有将近两周的时间了, 今天在整理项目的时候,遇到了一个关于参数注入的问题 背景: 我的开发前台用的是extjs4,在对后台spring mvc提交表单 ...

  2. Code Kata:螺旋矩阵 javascript实现

    1 2 3 4  5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9  如图所示,就是一个5*5的螺旋矩阵 我的思路如下: 第一步:拆分 ...

  3. Create-React-App创建antd-mobile开发环境(学习中的记录)

    (参考别人结合自己的整理得出,若有错误请大神指出) Facebook 官方推出Create-React-App脚手架,基本可以零配置搭建基于webpack的React开发环境,内置了热更新等功能. 详 ...

  4. 1267 - Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' | 1267 - Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (Latin,COERCIBL)

    select * FROM information_schema.columns WHERE table_schema = "databaseName" and collation ...

  5. hdu 4109 dfs+剪枝优化

    求最久时间即在无环有向图里求最远路径 dfs+剪枝优化 从0节点(自己添加的)出发,0到1~n个节点之间的距离为1.mt[i]表示从0点到第i个节点眼下所得的最长路径 #include<iost ...

  6. EBS採购模块中的级联接收和级联接收事务

    EBS採购模块中的级联接收和级联接收事务 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习.请注明出处:否则请与本人联系.违者必究) 级联接收和级联接收事务 级联功能对来自于同一个供应商 ...

  7. Linux网络编程--wireshark分析TCP包头的格式

    摘要:     本文简介了TCP面向连接理论知识,具体讲述了TCP报文各个字段含义.并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠传输 ...

  8. android 程序执行linux命令注意事项

    一:问题描述    在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些android主板下会出现异常, Command: [su] Working D ...

  9. 由一道bash jail题引出的琐事@_@

    关键词:Terminal devices.shell.stdio 题目入口: (需要注册) root@kali:~# ssh level1@24.37.41.154 -p 1016 level1@24 ...

  10. 2017年国内常用的公共NTP服务

    安卓机顶盒里常用的 http://cn.pool.ntp.org CERNET 的一堆服务器就在那里面 http://asia.pool.ntp.org 追踪它的IP,台湾.韩国.日本都有. 阿里云 ...