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. 见名知义;一看到变量就知道那个变量的意思。

转载于:https://www.cnblogs.com/cishi/p/4148150.html

Bash shell编程的语法知识点(1)相关推荐

  1. linux 10 -Bash Shell编程

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

  2. linux 中输入bash,Linux上Bash Shell编程

    Linux下Bash Shell编程 Bash Shell Programming in Linux Linux下Bash Shell编程 Bash what? 进阶的内容是什么? Okay, I g ...

  3. shell美元符_美元符号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...

  4. linux 命令详解 大于号_大于号与小于号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...

  5. linux之shell编程基本语法

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

  6. 【linux】shell编程 脚本语法

    1.对shell的认识 shell是linux中一个重要的层次,他是用户与系统交互作用的界面.最常见的使用方式:在介绍linux命令时,shell都是作为命令解释程序出现:他接收用户打入的命令,进行分 ...

  7. Shell编程基础语法

    1.Shell编程概述 Shell是一个命令行解释器,它接收应用程序或用户的命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. ①Linux系统提供的She ...

  8. 基于Linux的bash/shell编程基础

    目录 第一章 shell入门 1.什么是shell 2.shell入门 3,变量的定义和使用 4.接收用户输入(重点) 5.条件判断语句 6.运算符 6.1.算数运算符 6.2.关系运算符 6.3.逻 ...

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

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

  10. Linux bash shell 编程笔记(基础篇)

    文章目录 Part.I Introduction Chap.I 传送门 Chap.II 基础知识 Chap.III 实操笔记 Part.II 程序设计控制结构 Chap.I if 分支程序 Chap. ...

最新文章

  1. 计算机病毒攻防技术研究,计算机网络病毒辐射攻防技术研究.pdf
  2. EduCoder Linux 文件/目录管理
  3. FastTunnel-开源内网穿透框架
  4. python程序写诗_python写的简单发送邮件的脚本
  5. 就业阶段-java语言进价_day05
  6. 将x的二进制最后一位置为0
  7. python判断一个数是不是完全平方数
  8. 和华为杯_2020华为手机杯围甲联赛圆满闭幕 助力围棋文化推广
  9. tensorflow中prefetch最合适的用法
  10. dubbo源码解析之服务调用(通信)流程
  11. Multisim14仿真基本模拟电路之10.4.2 RC 正弦波振荡器的仿真实验与分析
  12. 如何禁止Chrome浏览器版本自动更新的方法
  13. c语言case用多重语句,switch多重选择
  14. windows10笔记本如何开wifi热点
  15. Me-tetrazine-Disulfo-Cyanine5,甲基四嗪-磺酸基菁染料Cy5,蓝色固体
  16. 神经网络neural network
  17. Android微信登陆
  18. 使用k3s部署轻量Kubernetes集群快速教程
  19. java调用快递物流接口api
  20. Servlet概念性回顾(结合Ajax)

热门文章

  1. thinkphp3.2.3入口文件详解
  2. TeamWork#3,Week5,The First Meeting of Our Team
  3. CDays-3 习题一 (处理命令行参数)及相关内容解析。Python getopt 简介
  4. java日期互转:LocalDateTime、String、Instant、Date
  5. Leetcode961. N-Repeated Element in Size 2N Array重复N次的元素
  6. 当Kubernets遇上阿里云 -之七层负载均衡(一).
  7. 怎样给div增加resize事件
  8. 安卓WindowManager注入事件如何跳出进程间安全限制
  9. Java NIO之缓冲区Buffer
  10. 启动工程Ehcache报错