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脚本进行整理,再见。

上一篇:强连通分量(tarjan求强连通分量)


下一篇:POJ2186 Popular Cows 强连通分量tarjan