bash脚本编写基础
bash脚本编程
命令的堆砌
脚本程序:解释器解析执行
shell:交互式接口,编程环境
shell:能够提供一些内部命令,并且能通过PATH环境变量找到外部命令,把命令提交给内核启动为进程;
编程环境:
流程控制语句
顺序执行
循环执行
选择执行
条件测试:真、假
过程式的编程语言的元素:变量、流程、函数、数组
变量:局部变量、本地变量、环境变量、位置参数变量、特殊变量
变量:
数值型:整型、浮点型、布尔型
字符型:字符串
bash变量是弱类型;默认字符型;
变量引用:${VAR_NAME}
引号:
强引用:''
echo '$PATH'
输出$PATH
弱引用:""
echo "$PATH"
输出$PATH的具体的值
命令引用:`COMMAND`, $(COMMAND)
aa=`echo $PATH` 或者aa=$(echo $PATH)
把命令echo $PATH的执行结果赋值给aa
声明某变量为整型变量:
let VAR_NAME=VALUE
declare -i VAR_NAME=VALUE
声明某变量为环境变量:
export VAR_NAME=VALUE
declare -x VAR_NAME=VALUE
脚本的编写格式:
第一行:写明解释器;#!/bin/bash
脚本绝对第一行从第一个字符位置开始给出shebang:
#!bin/bash
声明脚本要用bin目录下的bash来执行,而不是csh或者什么别的。
注释行:所有以#开头的行均为注释行,会被解释器忽略
执行脚本:
赋予执行权限,指明执行路径;
chmod +x first.sh
或者直接指定权限:bash first.sh
直接传递脚本给bash解释器
bash 脚本路径
export Path=...:/tmp
修改PATH变量,把first.s所在的目录/tmp写入path中
或者不修改path,给出绝对脚本绝对目录:/tmp/first.sh
或者给出相对路径:./first.sh
bash的选项:
-n: 测试脚本中是否有语法错误
-x: 调试执行
例:bash -x test.sh
开启一个子bash,之后执行命令,打印命令的执行过程
算术运算:
$[EXPRESSION]
let VAR_NAME=EXPRESSION
$((EXPRESSION))
bash命令退出和退出状态码
命令在bash中执行结束退出时,其执行成功与否可通过退出状态码来记录
脚本的退出状态码取决于执行的最后一条命令,自定义退出状态码
exit #:#代表数字
例:exit 5
遇到此条命令会退出程序之后运行echo $?,则返回5
成功:0
失败:1-255
注意:提前退出脚本,也可使用exit命令实现
例:
echo $?: 查看上一次命令执行成功与否,0表示成功执行
练习1:写一个脚本
(1) 创建目录/tmp/testdir;
(2) 复制文件/etc/fstab, /etc/rc.d/rc.sysinit至此目录中;
#!/bin/bash
directory=/tmp/testdir
mkdir $directory
cp /etc/fstab /etc/rc.d/rc.sysinit $directory
bash脚本编写基础的更多相关文章
- linux 脚本编写基础(一)
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...
- Bash脚本编写初体验
上周例会的时候,冷不丁的接到了维护原有的安装脚本和编写升级.卸载脚本的任务,PM和几个同事一本正经的说,一天甚至30分钟就可以精通shell脚本编写,哪怕没有语言基础也可以. 当然,作为有着C++.P ...
- shell 脚本编写基础
在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...
- Linux 脚本编写基础
txt去重 http://man.linuxde.net/sort Linux 脚本编写基础 http://www.cnblogs.com/linn/archive/2007/03/05/664 ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- Bash脚本编程基础
为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程. 按照应用的Shell环境不同,可以将Shell脚本分为多种类型.其中最常见的是应用于Bash和Tcsh的脚本 ...
- linux学习19 shell脚本基础-bash脚本编程基础及配置文件
一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由 ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- IDA-IDC脚本编写语法
1.IDA脚本编写基础 IDC是IDA内置的脚本语言,其语法与C非常相似,它是一种解释性语言. 执行方法 在IDA中按SHIFT+F2键会弹出一个对话框,把语句直接写在对话框中,点击run就可被运行. ...
随机推荐
- JSON.stringify 语法讲解
作用:这个函数的作用主要是为了系列化对象的. 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个比方说,你有一个 ...
- Vsftp设置为PASV mode(被动模式传送)
首先配置vsftpd.conf文件: #vi /etc/vsftpd/vsftpd.conf 在文件的末尾加上: pasv_enable=YES pasv_max_port=30010 pasv_mi ...
- Java面向对象(继承、抽象类)
面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...
- .NET CORE IIS 500.21
最近遇到的.NET CORE 500.21的错误 官方解决方案地址:https://docs.microsoft.com/en-us/dynamics-nav/troubleshooting-http ...
- 关于Servlet中的转发和重定项
一:转发 首先转发属于服务器内部行为,通过浏览器的地址栏是看不到URL变化的.比如说客户端发送一个请求到ServletA,ServletA接收到请求,但是没有能力处理,但是ServletA知道Serv ...
- 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
你的飞碟在这儿 难度:☆ Code: #include<iostream> #include<cstring> #include<cstdio> using nam ...
- Elasticsearch-分片原理1
Elasticsearch版本:6.0 Elasticsearch基于Lucene,采用倒排索引写入磁盘,Lucene引入了按段搜索的概念,来动态更新索引. 一个Lucene索引包含一个提交点和三个短 ...
- 使用poi或jxl,通过java读写xls、xlsx文档
package nicetime.com.baseutil; import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffExcepti ...
- SQL Server 填充因子
在创建聚集索引时,表中的数据按照索引列中的值的顺序存储在数据库的数据页中.在表中插入新的数据行或更改索引列中的值时,Microsoft® SQL Server™ 2000 可能必须重新 ...
- 一点对Promise的理解与总结
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10959411.html,多谢,=.=~ axios用多了就开始疑惑它里面到底是个啥,虽然总被告知 ...