公司网站模板,去迪拜网站做乞丐,重庆整站seo,深圳市手机网站建设怎么样Shell编程 目录 Shell编程1.shell基础1.输入重定向 输出重定向2.管道3.特殊字符(3.1)通配符(3.2)引号(3.3)注释符(#) 4.别名5.命令历史history 2.Shell脚本Shell脚本的执行方式(1)为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行。(2)sh shell脚本名(…Shell编程 目录 Shell编程1.shell基础1.输入重定向 输出重定向2.管道3.特殊字符(3.1)通配符(3.2)引号(3.3)注释符(#) 4.别名5.命令历史history 2.Shell脚本Shell脚本的执行方式(1)为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行。(2)sh shell脚本名(3). shell脚本名 3.shell变量1.用户自定义变量(1.1)定义(1.2)清除变量 2. 环境变量(2.1)常用环境变量(2.2)查看环境变量 3. 位置变量4.特殊变量 4.shell编程基础1.shell脚本的输入/输出(4.1)输入命令(4.2)输出命令(4.3)export命令export的语法 2.shell的逻辑运算(2.1)条件测试(2.2)逻辑运算 3.shell的算术运算1使用expr命令2使用shell扩展$((expression))(3) let命令 5.shell的控制结构1.if语句2.elif语句3.case语句4.for语句5.while语句 until语句6.break和continue语句(1) break命令(2) continue命令 6.shell函数1.函数定义2 函数调用3.带参数的shell函数如何实现 参考 1.shell基础
1.输入重定向 输出重定向
输入重定向 command [参数] 文件名 输出重定向 command [参数] 文件名
输出重定向追加 command [参数] 文件名 在源文件的内容后面追加
2.管道
Shell使用管道将一个命令的输出直接作为另一个命令的输入 通过使用管道符 ‘|’ 来建立一个管道 command_a [参数] | command_b [参数]
3.特殊字符
(3.1)通配符
通配符用于模式匹配,如文件名匹配、路径名搜索、字符串查找等。
*代表任何字符串(包括0个)?代表任何单个字符[] 代表指定的一个字符范围只要文件名中 [] 位置处打字符在 [] 中指定的范围之内那么这个文件名就与这个模式串匹配。
(3.2)引号
单引号(): 由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后也会失去原有意义,而只作为普通字符解释。双引号(): 由双引号括起来的字符,除“$”、“\”、“’”、和“””这几个字符仍是特殊字符并保留其特殊功能外,其余字符作为普通字符对待。反引号(): 反引号()括起来的字符串被shell解释为命令,在执行时,shell首先执行该命令,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
string current directory is pwd(3.3)注释符(#)
4.别名
(4.1)命令别名通常是其他命令缩写,用来减少键盘输入。命令格式为: alias new-name original-command
(4.2)取消别名 unalias new-name
(4.3)不加参数的alias命令执行结果将显示当前系统中定义的所有命令别名
5.命令历史history
(5.1)通过history命令可以对当前系统中执行过的所有shell命令进行显示
(5.2)若想重复执行命令历史中指定的命令,可使用如下格式:
!命令编号(5.3)环境变量HISTSIZE的值保存历史命令记录的总行数,该值的范围正常情况下是100~1000,当从shell中退出时,最近执行的命令将保存在HISTFILE变量指定的文件中。
HISTSIZE和HISTFILESIZE的区别:
HISTFILESIZE: 定义了在 .bash_history 中保存命令的记录总数.HISTSIZE: 定义了 history 命令输出的记录数.
2.Shell脚本
Shell脚本是用shell命令编写的文件,也称为shell script。与结构化程序不同,shell不需要编译成目标程序,也不需要链接成可执行的目标码,shell是按行一条接着一条地解释并执行shell脚本中的命令。
Shell脚本的执行方式 (1)为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行。
chomd ux file_name
./filename(2)sh shell脚本名
sh filename(3). shell脚本名
. filename3.shell变量
在shell脚本中也可以使用变量,一个变量就是内存中被命名的一块存储空间。
一个Shell变量的名字可以包含数字,字母和下划线,变量名的开头只准许是字母和下划线。变量名中的字母是大小 写敏感的变量名在理论上的长度没有限制。在shell编程中可以使用四种变量:用户自定义变量、环境变量、位置变量和特殊变量。
1.用户自定义变量
(1.1)定义
注意如果字符串里包含空格,就必须用引号把它们括起来。还要注意在等号两边不能有空格。 无论何时想要获取变量内容,必须在它前面加$字符。
var_namehello
echo $var_name(1.2)清除变量
设置的变量不需要时可以清除,清除变量格式如下:
unset variable-name2. 环境变量
当一个shell脚本程序开始执行时,一些变量会根据环境设置中的值进行初始化,这就是环境变量它决定了用户的工作环境,通常用大写字母作为变量名,以便把它们和用户在脚本程序里定义的变量区分开来。环境变量的值在系统的配置文件中设置,用户可对其进行修改
(2.1)常用环境变量 (2.2)查看环境变量
env3. 位置变量
如果脚本程序在执行时带有参数就会创建一些额外的变量这些额外的变量因跟变量所在命令行位置有关因此被称为位置变量或位置参数。 shell提供的位置变量有$0、$1、$2、$3、$4、$5、$6、$7、$8、 $9。 这10个位置变量在shell脚本执行时用于存放shell脚本名及参数。 其中位置变量**$0存放脚本名**$1、$2、$3、$4、$5、$6、$7、$8、$9存放从左至右的命令行上的参数。 当命令行上命令参数超过9个时shell提供了shift命令可以把所有 参数变量左移一个位置使$2变成$1$3变成$2依此类推。 使用格式如下shift [n]其中n表示向左移动参数的个数默认值为1。
4.特殊变量
shell中有一些变量是系统定义的有特殊的含义变量值由系统指定被称之为特殊变量
$#表示传递给脚本的实际参数个数。$$当前shell脚本的进程号。$*位置参数的值各个参数之间用环境变量IFS中定义的字 符分隔开。$也表示位置参数的值它不使用IFS环境变量所以当IFS为空时参数值不会结合在一起。$!上一个后台命令的进程号。$?执行最后一条命令的退出状态。
4.shell编程基础
1.shell脚本的输入/输出
(4.1)输入命令
read var
输入的内容...
echo $var
输出 输入的内容(4.2)输出命令
echo默认情况下是换行标准输出语句。echo输出多个空格时必须用单引号括起
(4.3)export命令
export命令可将在shell脚本中定义的变量导出到子shell中并使之在子shell中有效。
export命令用于将shell变量输出为环境变量或者将shell函数输出为环境变量。
export命令可用于显示或设置环境变量。export命令的效果仅限于当前登录终端。
export的语法
export [-fnp] [变量名][变量设置值]参数说明
-f代表[变量名称]中为函数名称。-n删除指定的变量实际未删除只是不会输出到后续指令的执行环境中。-p显示所有的shell赋予子程序的环境变量。
实例1显示当前所有的环境变量
$ export -p实例2设置环境变量
$ export PATH$PATH:/home/dabai/test/bin2.shell的逻辑运算
所有程序设计语言的基础是对条件进行测试判断并根据测试结果采取不同的操作
(2.1)条件测试
两种条件测试命令语法格式如下
test 条件表达式[ 条件表达式 ]
注意使用第二种方法进行条件测试时必须在[ ]前后保留空格否则shell提示error。
三种测试类型
字符串比较 算术比较 文件条件测试
(2.2)逻辑运算
在进行条件判断时shell提供了复杂的逻辑运算分别是AND运算和OR运算
AND运算运算符为$$语法格式为statement1 statement2 statement3OR运算OR允许持续执行一系列命令直到有一条命令成功为止其后的命令将不再被执行。运算符为||
3.shell的算术运算
bash提供了3种方法对数值数据进行算术运算
1使用expr命令2使用shell扩展$((expression))3使用let命令
1使用expr命令
expr命令将它的参数当作一个表达式来求值。语法格式
expr experssion注意在使用expr时运算符前后要有空格且乘法要用 “\”转义即“*”的形式。
2使用shell扩展$((expression))
该命令用于计算一个expression并返回它的值。
a2 b3
echo the result of ab is $((ab))(3) let命令
用来求算术表达式的值如果最后表达式的值为0let命令返回1否则返回0。语法格式为
let experssion注意使用let命令时变量前的$不是必须的乘法也 不需转义使用
5.shell的控制结构
1.if语句
if condition
thenstatements
elsestatements
fiif condition ; thenif condition ; thenif condition ; thenstatementsfifi
fiif condition1 ; thenstatements
elif condition2 ; thenstatements
elif condition3 ; thenstatements……
elsestatements
fi2.elif语句
if condition1
thenstatements
elif condition2
thenstatements
elif condition3
thenstatements……
elsestatements
fi3.case语句
case variable inpattern1) statements;;pattern2) statements;;……patternn) statements;;*) statements;;
esac实例(根据数字输出星期几)
#!/bin/bash
echo please enter the number of the week:
read number
case $number in
1) echo Monday;;
2) echo Tuesday;;
3) echo Wednsday;;
4) echo Thursday;;
5) echo Friday;;
6) echo saturday;;
7) echo Sunday;;
*) echo your enter must be in 1-7.;;
esaccase支持合并匹配模式即在每一个模式中可以使用通配符或逻辑符号。
#!/bin/bash
echo abc is the users name? please answer yes or no
read name
case $name in
y|Y|yes|YES) echo hello abc!;;
n*|N*) echo abc isnt the users name?;;
*) echo sorry,your input isnt recognized.;;
esac
exit 0在case结构中每个分支模式可以执行多条命令
#!/bin/bash
echo abc is the users name? please answer yes or no
read name
case $name iny|Y|yes|YES)echo hello abc!echo yes!;;n*|N*)echo abc isnt the users name?echo no!;;*) echo sorry,your input isnt recognized.echo please answer yes or noexit 1;;
esac
exit 04.for语句
for variable in values
dostatements
done5.while语句 until语句
while condition
dostatements
doneuntil语句与while语句一样都是循环语句但处理方式正好相反即当判断条件为真时循环停止
until condition
dostatements
done6.break和continue语句
和C语言基本一致。
(1) break命令
break命令的功能是在控制条件未满足之前跳出for、while或until循环。
(2) continue命令
使for、while或until循环跳到下一次循环继续执行循环变量取循环列表中的下一个值。
6.shell函数
1.函数定义
语法格式
function_name ( ) {statements
}2 函数调用
通常将函数看成是脚本中的一段代码在使用函数前必须先定义该函数使用时利用函数名直接调用。调用也和编程语言类似。
3.带参数的shell函数如何实现
1.在shell中向函数传递参数是使用位置参数来实现的。2.指定位置参数的值除了在脚本运行时传入位置参数外还可通过内置命令set命令给脚本指定位置参数一旦使用set设置了传入参数的值脚本将忽略运行时传入的位置参数实际上是被set命令重置了位置参数的值。
使用 set 命令修改位置参数即脚本参数 $1、$2 等。例如
set -- arg1 arg2 arg3
或者
set arg1 arg2 arg3$1 的值将是 “arg1″$2 的值将是 “arg2″依此类推。
参考
【export】Linux中export命令介绍三种方法设置环境变量shell编程之带参数的函数Linux set命令详解(Linux修改变量值的set命令)