shell脚本编程基础
最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用。
一、shell脚本基础
shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的。它的基本用途有:
1.自动化常用命令
2.执行系统管理和故障排除
3.创建简单的应用程序
4.处理文本或文件
...
二、创建shell脚本
第一步、使用文本编辑器来创建文本文件
第一行必须包括shell 声明序列:#! 也就是我们通常所说的“蛇棒”,如:`#!/bin/bash`
添加注释,注释以#开头,注释行会被解释器忽略。
第二步、运行脚本
给予执行权限,在命令行上指定脚本的绝对或相对路径
直接运行解释器,将脚本作为解释器程序的参数运行
脚本示例:
#!/bin/bash
# ------------------------------------------
# Filename: hello.sh
# Revision: 1.0
# Date: 2017/09/16
# Author: fly
# Email:
# Description: This is the first script
# ------------------------------------------
echo “hello world”
三、脚本调试
1.检测脚本的语法错误
bash -n /path/to/some_script
只检测,不执行脚本,并且不能检测脚本的逻辑错误
2.调试执行
bash -x /path/to/some_script
逐行执行脚本,便于直接判断脚本错误,但可能会有些不安全
四、常用变量
自定义变量
根据变量的生效范围,将自定义变量分为:
本地变量: 仅对当前SHELL有效,对子SHELL也无效
环境变量:对当前SHELL及其子SHELL均有效。
局部变量:生效范围为当前shell、进程中某代码片断( 通常指函数)
使用自定义变量前,我们需要对变量进行赋值,下面是变量命名规则:
1)使用变量无需事先声明
2)首个字符必须为字母(a-z,A-Z)
3)中间不能有空格,可以使用下划线(_)
4)不能使用标点符号
5)不能使用bash里的关键字(可用help命令查看保留关键字)
6)需要给变量赋值时,可以这么写:
7)变量名=值
8)取一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )
例:
A=1 (本地变量)
export B=2(环境变量)
local C=3(局部变量)
使用变量结束后,可以用unset name
删除自定义变量
位置变量
位置变量:在脚本代码中调用通过命令行传递给脚本的参数
$1, $2, ... :对应第1 、第2 等参数,shift [n] 换位置
$0: 命令本身
$*: 传递给脚本的所有参数,全部参数合为一个字符串
$@: 传递给脚本的所有参数,每个参数为独立字符串
$#: 传递给脚本的参数的个数
$@ $*只在被双引号包起来的时候才会有差异
可以用set --
清空所有位置变量
特殊变量
变量 | 含义 |
---|---|
$? | 变量保存最近的命令退出状态 |
$0 | 当前脚本的文件名 |
$# | 传递给脚本或函数的参数个数 |
$*/$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,$@与$* 稍有不同 |
$$ | 当前Shell进程ID,对于 Shell 脚本,就是这些脚本所在的进程ID |
请看下面脚本:
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Total Number of Parameters : $#"
运行结果:
./test.sh a b
File Name : test.sh
First Parameter : a
Second Parameter : b
Quoted Values: a b
Total Number of Parameters : 2
算数运算
let运算命令
#!/bin/bash
a=2;
b=3;
let sum=a+b
echo $sum
[ ]运算方法
#!/bin/bash
a=2;
b=3;
sum=$[a+b]
echo $sum
(( ))运算方法
#!/bin/bash
a=2;
b=3;
sum=$((a+b))
echo $sum
expr运算方法
a=1
b=2
sum=$(expr $a + $b)
echo $sum
精密计算
echo "1*2*3"|bc
今天对shell脚本就介绍到这里,下次继续对shell脚本进行整理,再见。
shell脚本编程基础的更多相关文章
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- shell脚本编程基础介绍
Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Linux基础篇–shell脚本编程基础
本章内容概要 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 7.1 编程基础程序:指令+数据程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心 ...
- Shell脚本编程基础笔记一
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8176137.html 一:脚本文件的创建.格式.运行 1:创建shell脚本 首先,要创建一个文件 touch ...
- Shell 脚本编程基础
通过本文记录学习Linux Shell的一些笔记思考和总结,以加强记忆和理解.主要学习参考资料有: 1.<鸟哥的Linux私房菜-基础篇>第四版 2.菜鸟教程——Linux教程 3.ear ...
随机推荐
- swipe和swiper的区别
swipe.js--移动WEB页面内容触摸滑动类库 参考http://www.jiawin.com/swipe-mobile-touch-slider 1.swipe只提供简单轮播切换,底部的圆点颜色 ...
- NOIP 2014 提高组 题解
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
- 关于个人编辑器sublime text3使用指南
用过了好多编辑器,前些年用的zend studio,phpstorm近两年转为nodepad++(因为写的语言种类比较多了,shell,python,php,前端等),相对于nodepad++, s ...
- angular学习(五)-- Module
1.5 模块:Module 模块定义了一个应用程序 模块是应用程序中不同部分的容器 模块是应用控制器的容器 控制器通常属于一个模块 ng 中模块的引入最重要的目的就是为了解决原来全局定义的控制器污染的 ...
- 【NO.12-1】Jmeter - 在Linux执行性能测试的方法 [1]
前面讲过在Windows执行性能测试的方法,就是这篇了<jmeter - 一个完整的接口测试的脚本>, 在Windows执行性能测试之前,首先要有1个性能测试脚本嘛, 但是这个性能测试脚本 ...
- javascript+HTMl5游戏下载,开发一个都能月薪上万!舅服你
HTML5时代已经到来许久了,你是否已经掌握了那么一点呢?今天小编给大家讲讲h5的折叠多设备.跨平台特性, 即用HTML5制作游戏.相比flash,HTML5更加灵活方便,随着浏览器技术的不断升级,H ...
- 使用 ESXi 虚拟化 Ryzen 1700
最近开发的一个项目,需要多台机器支持,PC + 各种虚拟机,整得很乱,一怒之下,购买一台Ryzen 1700 + 32GB机器自行搭建服务器.经历两天时间,不停的踩坑,终于完成: Ryzen 1700 ...
- Oracle基础--命令
====================== 基础命令====================== 1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界 ...
- 设计模式之Adapter模式
说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...
- HTML-JS基础 变量与输入输出 运算符 分支结构
js中的变量 1.JS中变量声明的写法: var num=10;//使用var声明的变量属于局部变量只在当前作用域内有效 num=10;//不用var声明的变量,默认为全局变量,在整个JS文件中都有效 ...