shell编程总结

    shellUNIX/Linux系统中一个重要的层次,它是用户与系统交互作用的界面。即用户通过shell完成对计算机的控制。shell是用户和操作系统之间的接口作为核外程序而存在。

shell脚本的建立

shell 脚本是一个文件,其中包含将由 shell 执行的一系列命令。当运行一个shell脚本时,脚本文件中的每一条命令被传送 给shell执行。
方法:利用编辑器(如vi)
shell脚本的执行

shell脚本的执行方式有三种:

1:输入定向到shell(该方式用输入重定向方式让shell从给定文件中读入命令行,并进行相应处理)其一般形式为:

$bash<脚本名

2:以脚本名作为bash参数(可以在脚本名后带参数从而将参数值传递给程序中的命令)

$bash脚本名【参数】

3:将shell脚本的权限设置为可执行,然后在提示符下直接执行。

shell特殊字符

一般通配符,引号,注释

*): 功能是匹配 任意字符的出现。
? ): 功能:是匹配任意 一个字符
([ ]):功能是匹配括号内所限定的任何一个 字符。
(““):功能是双引号括起来的字符作为普通字符对待。
$ ,倒引号,反斜线这三个任然保留其特殊功能。
$表示变量替换,用预先指定的变量值代替$和变量。
倒引号表示命令替换
反斜线在后面字符是¥ `\换行符之一时,表示转义字符,即不对后面字符特殊处理
单引号
功能: 单引号括起来的字符都作为普通字符。
单引号保留空白符
反斜杠消除单引号的特殊含义
倒引号 ` :也称为命令替换符
倒引号括起来的字符串被 shell 解释为命令行,每次先执行该命令行,然后用标准输出取代整个倒引号部分。
可利用这个功能进行 - 命令置换,即把倒引号括起来的命令执行结果赋给指定变量 .

注释(#功能:shell#看作注释符号,忽略#后的字符

shell变量(shell变量没有存储类和类型的限制可以使用时“边定义,边使用”

变量是脚本编程中如何进行数据表现的方法。
变量是表示计算机内存中保存的一种数据需要占的一个位置或一组位置的标识。
变量名可以由数字,字符和下划线组成,但是变量名只能由字符和下划线开头,而不能是数字。

shell 变量种类:
系统变量 :主要在判断命令参数和命令执行后的返回值时用到。
环境变量 :在程序运行时需要设置的变量。
用户变量 :局部变量由用户定义,用户可以定义、修改或删除他们。
shell变量:
用户定义的变量

变量名命令规则

以字母或下划线开头
由字母、数字、下划线组成
变量名区分大小写

变量赋值

格式
变量名=字符串
注意:
赋值号两边不能有空格
在赋给变量的值中含有空格、制表符或换行符,应该用双引号把这个字符串括起来。

引用变量值

访问 shell 变量的值,必须在变量名前面加 $ 符号。
    
环境变量

可用env命令查看系统定义的所有环境变量

HOME变量
登陆后,shell将用户主目录的完整路径赋给变量HOME。
LOGNAME
注册名
PATH变量
输入命令的时候LINUX会去查找PATH里面记录的路径,冒号间隔各个目录
shell查找命令时,如果在标准目录中找不到,就会到PATH所设置的用户目录中查找。
PS1 变量
shell 的主提示符。
PWD 变量
当前工作目录的路径
SHELL 变量
设置用户登陆 shell 的完整路径
TERM 变量
设置用户终端类型

显示和清除变量
输入 / 输出命令
read命令
利用 read 命令从键盘上读取数据,然后赋给指定的变量,可以 交互式 的为变量赋值。
格式
read 变量 1 变量 2 。。。
说明:
变量个数与给定数据个数相同,则依次对应赋值。
变量个数少于数据个数,则从左至右对应赋值, 最后一个变量被赋予剩余的所有数据
变量个数多于数据个数,则从左至右对应赋值,最后多余的变量不被赋值。
echo 命令 使用 echo 命令可以显示文本行或变量,或者把字符串输入到文件。
echo 命令有很多功能,其中最常用的是下面几个:
\c 不换行。
\f 进纸。
\t 跳格。
\n 换行。
-n 禁止换行
-e 解释转义字符 

命令行参数
命令行参数是用户键入命令后所跟的数据项,通常用空格分隔。
算术运算
   在shell脚本中进行算术运算(当表达式中有shell的特殊字符时,必须用双引号将其括起来。)
如:a=10
b=5
echo $a   输出为10
echo $b  输出为5
echo $a+$b 输出为15
echo a+b   输出为a+b
let c=a+b
echo $c   输出为15
expr命令(该命令提供算术运算功能,并能对数字或非数字字符串进行计算。)
为shell脚本添加控制结构

if语句
if…then…fi控制结构
i
f  [ condition ]
then 
commands

fi
     
If…then…else控制结构
if [ condition ]
then
true - commands
else
false - commands
fi

If…then…elif控制结构
if [ condition_1 ]
then
commands_1
elif [ condition_2 ]
    then 
    commands_2

else
commands_n
fi

条件测试
test语句
test是shell内部命令,它计算参数表达式的值为真还是为假。
如果表达式为真,test返回0,
否则,返回非0值。 

循环结构
while控制结构
while [ condition ]
do
commands
done

util控制结构
until [ condition ]
do
commands
done 

for…in控制结构
for variable in list - of - values
do
commands
done

for控制结构
for ((条件1; 条件2; 条件3))
do
命令表
done

break与continue
break可以结束整个循环,接着执行break之后的语句。
continue命令可以结束当次循环然后转入循环控制条件开始一次全新的循环。

case语句
case 字符串 in
模式字符串1) 命令;;
模式字符串2) 命令;;
模式字符串n) 命令;;
esac
注:case语句以case关键字开头,以esca结束
      每个模式字符串后可以跟多条命令,其最后一条必须以两个分号(;;)结束
                      各个模式字符串应唯一,不应重复出现
      可以用(*)作为最后一个模式字符串,可以匹配任何情况


你可能感兴趣的:(shell编程总结)