Bash shell编程的语法知识点(1)
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
脚本的简单介绍
脚本语言的好处就是简单、易学、易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情。它适用于系统管理、文本处理等方面完成特定功能的小程序。
- 书写格式;shell脚本格式如下:
#!/bin/bash 必须顶格写,指明解释器类型。除了第一行#!指明解释器类型之外,所有的#带头的shell都会认为是注释,不予执行。
- 执行与检测
-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,
变量命令法则:
- 不能带程序中的关键字:if,elif,fil,then,for,…
- 不能使用数字、字母或下划线,而且不能以数字开头;
- 见名知义;一看到变量就知道那个变量的意思。
转载于:https://www.cnblogs.com/cishi/p/4148150.html
Bash shell编程的语法知识点(1)相关推荐
- linux 10 -Bash Shell编程
二十三. Bash Shell编程: 1. 读取用户变量: read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果 ...
- linux 中输入bash,Linux上Bash Shell编程
Linux下Bash Shell编程 Bash Shell Programming in Linux Linux下Bash Shell编程 Bash what? 进阶的内容是什么? Okay, I g ...
- shell美元符_美元符号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...
聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...
- linux 命令详解 大于号_大于号与小于号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...
聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...
- linux之shell编程基本语法
Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...
- 【linux】shell编程 脚本语法
1.对shell的认识 shell是linux中一个重要的层次,他是用户与系统交互作用的界面.最常见的使用方式:在介绍linux命令时,shell都是作为命令解释程序出现:他接收用户打入的命令,进行分 ...
- Shell编程基础语法
1.Shell编程概述 Shell是一个命令行解释器,它接收应用程序或用户的命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. ①Linux系统提供的She ...
- 基于Linux的bash/shell编程基础
目录 第一章 shell入门 1.什么是shell 2.shell入门 3,变量的定义和使用 4.接收用户输入(重点) 5.条件判断语句 6.运算符 6.1.算数运算符 6.2.关系运算符 6.3.逻 ...
- 【shell编程基础0】bash shell编程的基本配置
前面一篇"shell编程之变量篇"主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash sh ...
- Linux bash shell 编程笔记(基础篇)
文章目录 Part.I Introduction Chap.I 传送门 Chap.II 基础知识 Chap.III 实操笔记 Part.II 程序设计控制结构 Chap.I if 分支程序 Chap. ...
最新文章
- 计算机病毒攻防技术研究,计算机网络病毒辐射攻防技术研究.pdf
- EduCoder Linux 文件/目录管理
- FastTunnel-开源内网穿透框架
- python程序写诗_python写的简单发送邮件的脚本
- 就业阶段-java语言进价_day05
- 将x的二进制最后一位置为0
- python判断一个数是不是完全平方数
- 和华为杯_2020华为手机杯围甲联赛圆满闭幕 助力围棋文化推广
- tensorflow中prefetch最合适的用法
- dubbo源码解析之服务调用(通信)流程
- Multisim14仿真基本模拟电路之10.4.2 RC 正弦波振荡器的仿真实验与分析
- 如何禁止Chrome浏览器版本自动更新的方法
- c语言case用多重语句,switch多重选择
- windows10笔记本如何开wifi热点
- Me-tetrazine-Disulfo-Cyanine5,甲基四嗪-磺酸基菁染料Cy5,蓝色固体
- 神经网络neural network
- Android微信登陆
- 使用k3s部署轻量Kubernetes集群快速教程
- java调用快递物流接口api
- Servlet概念性回顾(结合Ajax)
热门文章
- thinkphp3.2.3入口文件详解
- TeamWork#3,Week5,The First Meeting of Our Team
- CDays-3 习题一 (处理命令行参数)及相关内容解析。Python getopt 简介
- java日期互转:LocalDateTime、String、Instant、Date
- Leetcode961. N-Repeated Element in Size 2N Array重复N次的元素
- 当Kubernets遇上阿里云 -之七层负载均衡(一).
- 怎样给div增加resize事件
- 安卓WindowManager注入事件如何跳出进程间安全限制
- Java NIO之缓冲区Buffer
- 启动工程Ehcache报错