Shell编程概述Unix系统

时间:2023-06-11 03:45:58 作者:momococc 综合材料 收藏本文 下载本文

【导语】“momococc”通过精心收集,向本站投稿了7篇Shell编程概述Unix系统,下面是小编为大家整理后的Shell编程概述Unix系统,仅供大家参考借鉴,希望大家喜欢!

篇1:Shell编程概述Unix系统

1.1 Shell编程概述 shell程序是一个包含 UNIX 命令的普通文件,这个文件的许可权限至少应该为可读和可执行,在shell提示符下键入文件名就可执行shell程序,数据可以通过三种方式传送到shell程序 ??-环境变量 ??-命令行参数 ??-用户的输入 shell是一

1.1 Shell编程概述

shell程序是一个包含UNIX命令的普通文件,这个文件的许可权限至少应该为可读和可执行。在shell提示符下键入文件名就可执行shell程序,数据可以通过三种方式传送到shell程序

??-环境变量

??-命令行参数

??-用户的输入

shell是一个命令解释器,它会解释你在命令提示符下输入的命令。但是,你可能有一组想要多次执行的命令。shell提供了一种功能,让你将这组命令存放在一个文件中,然后你可以象unix系统提供的其他程序一样执行这个文件。这个命令文件就叫做shell程序或者shell脚本。当你运行这个文件,它会象你在命令行输入这些命令一样地执行这些命令。

为了让shell读取你的shell程序并且执行,shell必须能够读取并能够执行每一行命令。因此,shell脚本的许可权限必须被设置为可读和可执行。为了让shell可以找到你的程序,你可以选择输入完全路径名,或者将这个脚本的路径放在于你的PATH环境变量指定的路径列表中。许多的用户会在他们的HOME目录下创建一个bin目录来存放他们自己开发的script,然后将$HOME/bin加入到他们的PATH环境变量中。

你可以写出非常复杂的shell脚本,因为shell支持变量,命令行参数,交互式输入,tests(判断)),branches(分支),和loops(循环)。

1.2 shell程序举例

$ cat myprog

#this is the program myprog

date

ls CF

$ myprog

要创建一个shell程序,考虑进行以下步骤:

$ vi myprog ?????一个包含shell命令的程序,

#this is the program myprog

date

ls CF

$ chmod +x myprog 增加文件的执行模式

$ myprog

Thu Jul 11 11:10 EDT 1994

F1 f2 memo/ myprog*

首先使用一个文本编辑器来创建一个shell程序myprog。在程序执行之前,这个文件必须被赋予可执行的权限。然后在命令提示符下输入这个程序名。如上例所示,当myprog执行的时候,一个子shell会被创建。这个子shell会从shell程序文件myprog读取输入而不是从命令行。这个shell中的每个命令的执行都会创建一个子shell。一旦所有的命令都被执行,所有的子shell会中止,然后会返回到原始的父shell。

Shell程序中的注释:

推荐在shell程序中提供注释语句来注明程序的内容。注释由一个#符号开始。Shell不会去执行任何在#之后的语句。#能够出现在命令行的任何位置。

注意:你不可以给shell程序取名为test因为test是一个内部的shell命令。

共4页: 1 [2] [3] [4] 下一页

原文转自:www.ltesting.net

篇2:不是SHELL的SHELL―TCSH SHELL 编程Unix系统

TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如TCSH 的test条件的控制结构是表达式,而不是 linux 命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同. 一 TCSH shell变量,脚本, 参数用户可以在shell中定义变

TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同.

一 TCSH shell变量,脚本,

参数用户可以在shell中定义变量,为变量赋值以及引用脚本参数.TCSH使用set,@,setenv定义一变量,也可以用相同的方法定义数值变量和数组,用户通过@命令定义的数值变量来进行算术运算,用户使用圆括号和方括号[]定义和引用数组.脚本也可以用相同的方法操作,但是有个例外,尽管可以用echo命令输出提示符,但没有read命令处理输入,相反,必须重定向到一个变量里.

二 脚本输入和脚本输出

$ <用户能够在脚本范围中定义和使用变量.在下例中使用文本编辑器把赋值操作和echo之类的linux命令放在一个文件中.然后 p=“p” read命令的比较版本.记住tcsh全部的脚本文件的第一行的第一个字符必须是=“read命令的比较版本.记住TCSH全部的脚本文件的第一行的第一个字符必须是” 可以产生可执行文件并像其他命令一样在命令行中执行它要记住添加可执行权限必须使用带ux参数的chmod命令或者带绝对参数700的chmod命令.在脚本中可以使用echo命令去输出数据但是必须通过重定向标准输入把输入读入变量.在tcsh中没有linux=“可以产生可执行文件并像其他命令一样在命令行中执行它,要记住添加可执行权限,必须使用带u+x参数的chmod命令或者带绝对参数700的chmod命令.在脚本中,可以使用echo命令去输出数据,但是,必须通过重定向标准输入把输入读入变量.在TCSH中没有linux” 字符.如:=“字符.如:<”>

#

#display “hello”

set string=“hello”

echo The value of string is $string

set命令和重定向符号结合$<将用户输入的任何数据读入标准的输入中.下例中把用户输入读入string变量中.>

%set string=$<

abc

%echo $string

abc

能够把提示符放置到相同的行用作echo的输入.TCSH使用一个特殊的选项-n,将消除输出字符串中的回车符.光标将保留在输出字符串的结尾处.

%echo -n please enter a string

%cat hello

#

echo -n “please enter a string:”

set string=$<

echo “the value of string is $string”

%chmod u+x hello

%hello

please enter a string:hello

the value of string is hello

%

三 操作符TCSH

它有一系列标准的赋值,算术和关系运算以及重定向和后台操作等函数赋值运算符

功能说明

= 赋值操作

+= 先加再赋值

-= 先减再赋值

*= 先乘再赋值

/= 先除再赋值

%= 取余再赋值

++ 自增量1

-- 自减量1

算术运算符 说明

- 负号

+ 加法

- 减法

* 乘法

/ 除法

% 取余

关系运算符 说明

>大于

< 小于

>= 大于等于

<= 小于等于

!= 不等于

== 等于

重定向和管道符TCSH支持标准输入和标准输出的重定向和管道操作.如果设置了noclobber特征,要用重定向操作重写当前文件,需要用符号>!代替>

四 控制结构

同其他shell一样,TCSH也有一系列的控制结构控制脚本的命令的执行.while和if控制结构是最常用的控制结构.switch和foreach是更专用的控制结构.switch是if条件的限定形式,检查数值是否等于一系列可能的数值中的一个数值.foreach是循环结构的限定形式.浏览数值列表,给变量赋新的数值.TCSH不同的控制结构列表:

条件控制结构; 功能

if (expression) then 如果expression为真,则执行commands commands

endif

if (expression) then 如果expression为真,则执行command1,否则执行command1 command2.

else

command2

endif

switch (string) 允许在几条替换命令中选择,string为不同的模式case pattern:

commands

breadsw

default:

commands

endsw

循环控制结构: 功能while (expression) 只要expression为真,则重复执行commands,commands 直到expression为假时跳出循环end

foreach variable (argument-list)迭代循环获得和argument-list中一样多的参数commands (每次循环variable被设置为列表的下一个参数;end 操作方式同BSH)

TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道输出.

五 测试表达式

()if和while控制结构把表达式用作测试.表达式测试的结果为非零(1)表示真,而零(0)表示假(跟BASH相反).测试表达式可由算术/字符串比较,但是字符串只能作相等和不相等的比较.而且表达式必须要在()括号内.如:

if (expression) then

command

endif

TCSH有一系列的运算符来分别对字符串进行测试比较.正则表达式可以包含shell脚本的指令的字符串.如:

if ( $var =~[Hh]* ) then #如果变量$var以字母是大写/小写Hh开头,的字符串

echo information #执行命令

endif #结束

有很多测试文件的操作与BASH完全相同.如:

if ( -r myfile ) then #测试myfile是否可读

echo info

endif

测试表达式的基本操作:

字符串比较: 功能

== 是否相等,若相等返回真

!= 是否不等,若不等返回真

=~ 字符串和模式进行测试是否相等(模式为任意正则表达式)

!~ 字符串和模式测试是否不等(模式为任意正则表达式)文件测试: 功能

-e 测试文件是否存在

-r 测试文件是否可读

-w 测试文件是否可写

-x 测试文件是否可执行

-d 测试文件名是否为目录

-f 测试文件是否为普通文件

-o 测试文件是否被用户所拥有

-z 测试文件是否为空

逻辑运算符: 功能

&& 与运算,两个条件同时蛮族

|| 或运算,有一个条件满足

! 取反

共5页: 1 [2] [3] [4] [5] 下一页

原文转自:www.ltesting.net

篇3:Linux的Shell编程Linux

其实作为命令语言互动式地解释和执行用户输入的命令只是Shell功能的一个方面,Shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构,使用Shell编程类似于DOS中的批处理文件,称为Shell script,又叫Shell程序或Shell命令文件

其实作为命令语言互动式地解释和执行用户输入的命令只是Shell功能的一个方面,Shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用Shell编程类似于DOS中的批处理文件,称为Shell script,又叫Shell程序或Shell命令文件。

Shell基本语法

像高级程序设计语言一样,Shell也提供说明和使用变量的功能。对Shell来讲,所有变量的取值都是一个字串,Shell程序采用$var的形式来引用名为var的变量的值。

Shell有以下几种基本类型的变量。

(1)Shell定义的环境变量:

Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有:

HOME 用于保存注册目录的完全路径名。

PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

TERM 终端的类型。

UID 当前用户的识别字,取值是由数位构成的字串。

PWD 当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。

PS1 主提示符,在特权用户下,默认的主提示符是#,在普通用户下,默认的主提示符是$。

PS2 在Shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时Shell判断出用户输入的命令没有结束时,就显示这个辅助提示符,提示用户继续输入命令的其余部分,默认的辅助提示符是>。

(2)用户定义的变量:

用户可以按照下面的语法规则定义自己的变量:

变量名=变量值

要注意的一点是,在定义变量时,变量名前不应加符号$,在引用变量的内容时则应在变量名前加$;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字串都要用双引号括起来。

在编写Shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。

有时我们想要在说明一个变量并对它设置为一个特定值后就不在改变它的值时,可以用下面的命令来保证一个变量的只读性:

readonly 变量名

在任何时候,创建的变量都只是当前Shell的局部变量,所以不能被Shell运行的其他命令或Shell程序所利用,而export命令可以将一个局部变量提供给Shell执行的其他命令使用,其格式为:

export 变量名

也可以在给变量赋值的同时使用export命令:

export 变量名=变量值

使用export说明的变量,在Shell以后运行的所有命令或程序中都可以访问到。

(3)位置参数:

位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。$0是一个特殊的变量,它的内容是当前这个Shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。

(4)预定义变量:

预定义变量和环境变量相类似,也是在Shell一开始时就定义了的变量。所不同的是,用户只能根据Shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的Shell预定义变量有:

$# 位置参数的数量。

$* 所有位置参数的内容。

$? 命令执行后返回的状态。

$$ 当前进程的进程号,

$! 后台运行的最后一个进程号。

$0 当前执行的进程名。

其中,$?用于检查上一个命令执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)

$$变量最常见的用途是用做暂存文件的名字以保证暂存文件不会重复。

(5)参数置换的变量:

Shell提供了参数置换功能以便用户可以根据不同的条件来给变量赋不同的值。参数置换的变量有4种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置类决定变量的取值,它们的语法和功能分别如下。

a. 变量=${参数-word}:如果设置了参数,则用参数的值置换变量的值,否则用word置换。即这种变量的值等于某一个参数的值,如果该参数没有设置,则变量就等于word的值。

b. 变量=${参数=word}:如果设置了参数,则用参数的值置换变量的值,否则把变量设置成word,然后再用word替换参数的值。注意,位置参数不能用于这种方式,因为在Shell程序中不能为位置参数赋值。

c. 变量=${参数?word}:如果设置了参数,则用参数的值置换变量的值,否则就显示word并从Shell中退出,如果省略了word,则显示标准信息。这种变量要求一定等于某一个参数的值。如果该参数没有设置,就显示一个信息,然后退出,因此这种方式常用于出错指示。

d. 变量=${参数+word}:如果设置了参数,则用word置换变量,否则不进行置换。

所有这4种形式中的“参数”既可以是位置参数,也可以是另一个变量,只是用位置参数的情况比较多。

Shell程序设计的流程控制

和其他高级程序设计语言一样,Shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令创建非常复杂的程序。

与传统语言不同的是,Shell用于指定条件值的不是布尔运算式,而是命令和字串。

1.测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件3个方面的测试,其测试符和相应的功能分别如下。

(1)数值测试:

-eq 等于则为真。

-ne 不等于则为真。

-gt 大于则为真。

-ge 大于等于则为真。

-lt 小于则为真。

-le 小于等于则为真。

(2)字串测试:

= 等于则为真。

!= 不相等则为真。

-z字串 字串长度伪则为真。

-n字串 字串长度不伪则为真。

(3)文件测试:

-e文件名 如果文件存在则为真。

-r文件名 如果文件存在且可读则为真。

-w文件名 如果文件存在且可写则为真。

-x文件名 如果文件存在且可执行则为真。

-s文件名 如果文件存在且至少有一个字符则为真。

-d文件名 如果文件存在且为目录则为真。

-f文件名 如果文件存在且为普通文件则为真。

-c文件名 如果文件存在且为字符型特殊文件则为真。

-b文件名 如果文件存在且为块特殊文件则为真。

另外,Linux还提供了与(!)、或(-o)、非(-a)三个逻辑操作符,用于将测试条件连接起来,其优先顺序为:!最高,-a次之,-o最低。

同时,bash也能完成简单的算术运算,格式如下:

$[expression]

例如:

var1=2

var2=$[var1*10+1]

则var2的值为21。

共4页: 1 [2] [3] [4] 下一页

原文转自:www.ltesting.net

篇4:Linux的shell编程Linux

转载别人的文章《 Linux 的shell编程 》 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁,Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提

转载别人的文章《Linux的shell编程》

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

一、什么是shell

当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的command.com所做的一样,所不同的是,在DOS中,command.com只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。

二、几种流行的shell

目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:

#echo $SHELL

$SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令:

#shell-name

来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令:

$exit

可以退出这个子shell。

使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍:

1.ash

ash shell是由Ke.neth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。

2.bash

bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色:

(1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。

(2)自动通过查找匹配的方式给出以某字符串开头的命令。

(3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。

3.ksh

ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。

4.csh

csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。

5.zch

zch是Linux最大的shell之一,由Paul Falstad完成,共有84个内部命令。如果只是一般的用途,是没有必要安装这样的shell的。

3. shell程序设计(基础部分)

其实作为命令语言交互式地解释和执行用户输入的命令只是shell功能的一个方面,shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中的批处理文件,称为shell script,又叫shell程序或shell命令文件。

1.shell基本语法

shell的基本语法主要就是如何输入命令运行程序以及如何在程序之间通过shell的一些参数提供便利手段来进行通讯。

(1)输入输出重定向

在Linux中,每一个进程都有三个特殊的文件描述指针:标准输入(standard input,文件描述指针为0)、标准输出(standard output,文件描述指针为1)、标准错误输出(standard error,文件描述指针为2)。这三个特殊的文件描述指针使进程在一般情况下接收标准输入终端的输入,同时由标准终端来显示输出,Linux同时也向使用者提供可以使用普通的文件或管道来取代这些标准输入输出设备。在shell中,使用者可以利用“>”和“<”来进行输入输出重定向。如:

command>file:将命令的输出结果重定向到一个文件。

command>&file:将命令的标准错误输出一起重定向到一个文件。

command>>file:将标准输出的结果追加到文件中。

command>>&file:将标准输出和标准错误输出的结构都追加到文件中。

command

(2)管道pipe

pipe同样可以在标准输入输出和标准错误输出间做代替工作,这样一来,可以将某一个程序的输出送到另一个程序的输入,其语法如下:

command1| command2[| command3...]

也可以连同标准错误输出一起送入管道:

command1| &command2[|& command3...]

(3)前台和后台

在shell下面,一个新产生的进程可以通过用命令后面的符号“;”和“&”来分别以前台和后台的方式来执行,语法如下:

command

产生一个前台的进程,下一个命令须等该命令运行结束后才能输入。

command &

产生一个后台的进程,此进程在后台运行的同时,可以输入其他的命令。

2。shell程序的变量和参数

像高级程序设计语言一样,shell也提供说明和使用变量的功能。对shell来讲,所有变量的取值都是一个字符串,shell程序采用$var的形式来引用名为var的变量的值。

Shell有以下几种基本类型的变量:

(1)shell定义的环境变量

shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:

HOME:用于保存注册目录的完全路径名。

PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

TERM:终端的类型。

UID:当前用户的标识符,取值是由数字构成的字符串。

PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。

PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。

PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。

(2)用户定义的变量

用户可以按照下面的语法规则定义自己的变量:

变量名=变量值

要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。

在编写shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。

有时我们想要在说明一个变量并对它设定为一个特定值后就不在改变它的值,这可以用下面的命令来保证一个变量的只读性:

readly 变量名

在任何时候,建立的变量都只是当前shell的局部变量,所以不能被shell运行的其他命令或shell程序所利用,export命令可以将一局部变量提供给shell执行的其他命令使用,其格式为:

export 变量名

也可以在给变量赋值的同时使用export命令:

export 变量名=变量值

使用export说明的变量,在shell以后运行的所有命令或程序中都可以访问到。

(3)位置参数

位置参数是一种在调用shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的,第二个替换,依次类推。是一个特殊的变量,它的内容是当前这个shell程序的文件名,所以,不是一个位置参数,在显示当前所有的位置参数时是不包括的。

(4)预定义变量

预定义变量和环境变量相类似,也是在shell一开始时就定义了的变量,所不同的是,用户只能根据shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的shell预定义变量有:

$#:位置参数的数量

$*:所有位置参数的内容

$?:命令执行后返回的状态

$$:当前进程的进程号

$!:后台运行的最后一个进程号

:当前执行的进程名

其中,“$?”用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)。

“$$”变量最常见的用途是用作临时文件的名字以保证临时文件不会重复。

(5)参数置换的变量

shell提供了参数置换能力以便用户可以根据不同的条件来给变量赋不同的值。参数置换的变量有四种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置类决定变量的取值,它们的语法和功能分别如下。

a. 变量=$:如果设置了参数,则用参数的值置换变量的值,否则用word置换。即这种变量的值等于某一个参数的值,如果该参数没有设置,则变量就等于word的值。

b. 变量=$:如果设置了参数,则用参数的值置换变量的值,否则把变量设置成word然后再用word替换参数的值。注意,位置参数不能用于这种方式,因为在shell程序中不能为位置参数赋值。

c. 变量=$:如果设置了参数,则用参数的值置换变量的值,否则就显示word并从shell中退出,如果省略了word,则显示标准信息。这种变量要求一定等于某一个参数的值,如果该参数没有设置,就显示一个信息,然后退出,因此这种方式常用于出错指示。

d. 变量=$:如果设置了参数,则用word置换变量,否则不进行置换。

所有这四种形式中的“参数”既可以是位置参数,也可以是另一个变量,只是用位置参数的情况比较多。

四、shell程序设计的流程控制

和其他高级程序设计语言一样,shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令建立非常复杂的程序。

与传统的语言不同的是,shell用于指定条件值的不是布尔表达式而是命令和字符串。

1.test测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:

(1)数值测试:

-eq:等于则为真

-ne:不等于则为真

-gt:大于则为真

-ge:大于等于则为真

-lt:小于则为真

-le:小于等于则为真

(2)字符串测试:

=:等于则为真

!=:不相等则为真

-z 字符串:字符串长度伪则为真

-n 字符串:字符串长度不伪则为真

(3)文件测试:

-e 文件名:如果文件存在则为真

-r 文件名:如果文件存在且可读则为真

-w 文件名:如果文件存在且可写则为真

-x 文件名:如果文件存在且可执行则为真

-s 文件名:如果文件存在且至少有一个字符则为真

-d 文件名:如果文件存在且为目录则为真

-f 文件名:如果文件存在且为普通文件则为真

-c 文件名:如果文件存在且为字符型特殊文件则为真

-b 文件名:如果文件存在且为块特殊文件则为真

另外,Linux还提供了与(“!”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。

同时,bash也能完成简单的算术运算,格式如下:

$[expression]

例如:var1=2

var2=$[var1*10+1]

则:var2的值为21,

2.if条件语句

shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:

if 条件命令串

then

条件为真时的命令串

else

条件为假时的命令串

fi

3.for 循环

for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为:

for 变量名 [in 数值列表]

do

若干个命令行

done

变量名可以是用户选择的任何字符串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表。

4.while和until 循环

while 和 until命令都是用命令的返回状态值来控制循环的。While 循环的一般格式为:

while

若干个命令行1

do

若干个命令行2

done

只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行do...done之间的“若干个命令行2”。

until命令是另一种循环结构,它和while命令相似,其格式如下:

until

若干个命令行1

do

若干个命令行2

done

until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。

Shell还提供了true和false两条命令用于建立无限循环结构的需要,它们的返回状态分别是总为0或总为非0

5.case 条件选择

if条件语句用于在两个选项中选定一项,而case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,其格式如下:

case string in

exp-1)

若干个命令行1

;;

exp-2)

若干个命令行2

;;

……

*)

其他命令行

esac

shell通过计算字符串string的值,将其结果依次和表达式exp-1、exp-2等进行比较,直到找到一个匹配的表达式为止,如果找到了匹配项则执行它下面的命令直到遇到一对分号(;;)为止。

在case表达式中也可以使用shell的通配符(“*”、“?”、“[ ]”)。通常用“*”作为case命令的最后表达式以便使在前面找不到任何相应的匹配项时执行“其他命令行”的命令。

6.无条件控制语句break和continue

break 用于立即终止当前循环的执行,而contiune用于不执行循环中后面的语句而立即开始下一个循环的执行。这两个语句只有放在do和done之间才有效。

7.函数定义

在shell中还可以定义函数。函数实际上也是由若干条shell命令组成的,因此它与shell程序形式上是相似的,不同的是它不是一个单独的进程,而是shell程序的一部分。函数定义的基本格式为:

functionname

{

若干命令行

}

调用函数的格式为:

functionname param1 param2 ……

shell函数可以完成某些例行的工作,而且还可以有自己的退出状态,因此函数也可以作为if、while等控制结构的条件。

在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时shell将把这些参数分别赋予相应的位置参数、、...及$*。

8.命令分组

在shell中有两种命令分组的方法:“”和“{}”,前者当shell执行()中的命令时将再创建一个新的子进程,然后这个子进程去执行圆括弧中的命令。当用户在执行某个命令时不想让命令运行时对状态集合(如位置参数、环境变量、当前工作目录等)的改变影响到下面语句的执行时,就应该把这些命令放在圆括弧中,这样就能保证所有的改变只对子进程产生影响,而父进程不受任何干扰;{}用于将顺序执行的命令的输出结果用于另一个命令的输入(管道方式)。当我们要真正使用圆括弧和花括弧时(如计算表达式的优先级),则需要在其前面加上转义符(\\)以便让shell知道它们不是用于命令执行的控制所用。

9.信号

trap命令用于在shell程序中捕捉到信号,之后可以有三种反应方式:

(1)执行一段程序来处理这一信号

(2)接受信号的默认操作

(3)忽视这一信号

trap对上面三种方式提供了三种基本形式:

第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串。

trap 'commands' signal-list

trap “commands” signal-list

为了恢复信号的默认操作,使用第二种形式的trap命令:

trap signal-list

第三种形式的trap命令允许忽视信号:

trap “ ” signal-list

注意:

(1)对信号11(段违例)不能捕捉,因为shell本身需要捕捉该信号去进行内存的转储。

(2)在trap中可以定义对信号0的处理(实际上没有这个信号),shell程序在其终止(如执行exit语句)时发出该信号。

(3)在捕捉到signal-list中指定的信号并执行完相应的命令之后,如果这些命令没有将shell程序终止的话,shell程序将继续执行收到信号时所执行的命令后面的命令,这样将很容易导致shell程序无法终止。

另外,在trap语句中,单引号和双引号是不同的,当shell程序第一次碰到trap语句时,将把commands中的命令扫描一遍。此时若commands是用单引号括起来的话,那么shell不会对commands中的变量和命令进行替换,否则commands中的变量和命令将用当时具体的值来替换。

五、运行shell程序的方法

用户可以用任何编辑程序来编写shell程序。因为shell程序是解释执行的,所以不需要编译装配成目标程序,按照shell编程的惯例,以bash为例,程序的第一行一般为“#!/bin/bash”,其中#表示该行是注释,叹号“!”告诉shell运行叹号之后的命令并用文件的其余部分作为输入,也就是运行/bin/bash并让/bin/bash去执行shell程序的内容。

执行shell程序的方法有三种:

(1)sh shell程序文件名

这种方法的命令格式为:

bash shell程序文件名

这实际上是调用一个新的bash命令解释程序,而把shell程序文件名作为参数传递给它。新启动的shell将去读指定的文件,执行文件中列出的命令,当所有的命令都执行完结束。该方法的优点是可以利用shell调试功能。

(2)sh

格式为:

bash

这种方式就是利用输入重定向,使shell命令解释程序的输入取自指定的程序文件。

(3)用chmod命令使shell程序成为可执行的

一个文件能否运行取决于该文件的内容本身可执行且该文件具有执行权。对于shell程序,当用编辑器生成一个文件时,系统赋予的许可权限都是644(rw-r-r--),因此,当用户需要运行这个文件时,只需要直接键入文件名即可。

在这三种运行shell程序的方法中,最好按下面的方式选择:当刚建立一个shell程序,对它的正确性还没有把握时,应当使用第一种方式进行调试。当一个shell程序已经调试好时,应使用第三种方式把它固定下来,以后只要键入相应的文件名即可,并可被另一个程序所调用。

六、bash程序的调试

在编程过程中难免会出错,有的时候,调试程序比编写程序花费的时间还要多,shell程序同样如此。

shell程序的调试主要是利用bash命令解释程序的选择项。调用bash的形式是:

bash -选择项 shell程序文件名

几个常用的选择项是:

-e:如果一个命令失败就立即退出

-n:读入命令但是不执行它们

-u:置换时把未设置的变量看作出错

-v:当读入shell输入行时把它们显示出来

-x:执行命令时把命令和它们的参数显示出来

上面的所有选项也可以在shell程序内部用“set -选择项”的形式引用,而“set +选择项”则将禁止该选择项起作用。如果只想对程序的某一部分使用某些选择项时,则可以将该部分用上面两个语句包围起来。

1.未置变量退出和立即退出

未置变量退出特性允许用户对所有变量进行检查,如果引用了一个未赋值的变量就终止shell程序的执行。shell通常允许未置变量的使用,在这种情况下,变量的值为空。如果设置了未置变量退出选择项,则一旦使用了未置变量就显示错误信息,并终止程序的运行。未置变量退出选择项为“-u”。

当shell运行时,若遇到不存在或不可执行的命令、重定向失败或命令非正常结束等情况时,如果未经重新定向,该出错信息会打印在终端屏幕上,而shell程序仍将继续执行。要想在错误发生时迫使shell程序立即结束,可以使用“-e”选项将shell程序的执行立即终止。

2.shell程序的跟踪

调试shell程序的主要方法是利用shell命令解释程序的“-v”或“-x”选项来跟踪程序的执行。“-v”选择项使shell在执行程序的过程中,把它读入的每一个命令行都显示出来,而“-x”选择项使shell在执行程序的过程中把它执行的每一个命令在行首用一个“+”加上命令名显示出来。并把每一个变量和该变量所取的值也显示出来,因此,它们的主要区别在于:在执行命令行之前无“-v”则打印出命令行的原始内容,而有“-v”则打印出经过替换后的命令行的内容。

除了使用shell的“-v”和“-x”选择项以外,还可以在shell程序内部采取一些辅助调试的措施。例如,可以在shell程序的一些关键地方使用echo命令把必要的信息显示出来,它的作用相当于C语言中的printf语句,这样就可以知道程序运行到什么地方及程序目前的状态。

七、bash的内部命令

bash命令解释程序包含了一些内部命令。内部命令在目录列表时是看不见的,它们由shell本身提供。常用的内部命令有:echo、eval、exec、export、readonly、read、shift、wait和点(.)。下面简单介绍其命令格式和功能。

1.echo

命令格式:echo arg

功能:在屏幕上打印出由arg指定的字符串。

2.eval

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行。

3.exec

命令格式:exec 命令 命令参数

功能:当shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程,也就是最初的shell就终止了,所以shell程序中exec后面的语句将不再被执行。

4.export

命令格式:export 变量名 或:export 变量名=变量值

功能:shell可以用export把它的变量向下带入子shell从而让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父shell。

注意:不带任何变量名的export语句将显示出当前所有的export变量。

5.readonly

命令格式:readonly 变量名

功能:将一个用户定义的shell变量标识为不可变的。不带任何参数的readonly命令将显示出所有只读的shell变量。

6.read

命令格式:

read变量名表

功能:从标准输入设备读入一行,分解成若干字,赋值给shell程序内部定义的变量。

7.shift语句

功能:shift语句按如下方式重新命名所有的位置参数变量:成为,成为……在程序中每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数“$#”减一,直到减到0。

8.wait

功能:是shell等待在后台启动的所有子进程结束。Wait的返回值总是真。

9.exit

功能:退出shell程序。在exit之后可有选择地指定一个数字作为返回状态。

10.“.”(点)

命令格式:. Shell程序文件名

功能:使shell读入指定的shell程序文件并依次执行文件中的所有语句。

原文转自:www.ltesting.net

篇5:Linux的shell编程

转载别人的文章《Linux的shell编程》

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁,Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的command.com所做的一样,所不同的是,在DOS中,command.com只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个,

Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。 5.zch zch是Linux最大的shell之一,由Paul Falstad完成,共有84个内部命令。如果只是一般的用途,是没有必要安装这样的shell的。 3. shell程序设计(基础部分) 其实作为命令语言交互式地解释和执行用户输入的命令只是shell功能的一个方面,shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中的批处理文件,称为shell script,又叫shell程序或shell命令文件。 1.shell基本语法 shell的基本语法主要就是如何输入命令运行程序以及如何在程序之间通过shell的一些参数提供便利手段来进行通讯。 (1)输入输出重定向 在Linux中,每一个进程都有三个特殊的文件描述指针:标准输入(standard input,文件描述指针为0)、标准输出(standard output,文件描述指针为1)、标准错误输出(standard error,文件描述指针为2)。这三个特殊的文件描述指针使进程在一般情况下接收标准输入终端的输入,同时由标准终端来显示输出,Linux同时也向使用者提供可以使用普通的文件或管道来取代这些标准输入输出设备。在shell中,使用者可以利用“>”和“<”来进行输入输出重定向。如: command>file:将命令的输出结果重定向到一个文件。 command>&file:将命令的标准错误输出一起重定向到一个文件。 command>>file:将标准输出的结果追加到文件中。 command>>&file:将标准输出和标准错误输出的结构都追加到文件中。 command (2)管道pipe pipe同样可以在标准输入输出和标准错误输出间做代替工作,这样一来,可以将某一个程序的输出送到另一个程序的输入,其语法如下: command1| command2[| command3...] 也可以连同标准错误输出一起送入管道: command1| &command2[|& command3...] (3)前台和后台 在shell下面,一个新产生的进程可以通过用命令后面的符号“;”和“&”来分别以前台和后台的方式来执行,语法如下: command 产生一个前台的进程,下一个命令

篇6:shell脚本编程(快速排序)

#!/bin/bash#shell脚本编程之快速排序的实现(以最右边为元点的思想)a=(8 5 10 3 2 93 4 1 2 3 40 9 61 8 6 29)#a=(0 0 0 0 1 2 3 3 4 4 8 28 30495 921 43716)temp=buff=#交换函数swap{ buff=${a[$1]} a[$1]=${a[$2]} a[$2]=$buff}fun(){ i=$(($1-1)) j=$1 temp=${a[$2]} if test $1 -ge $2 ;then return 2 fi while [ $j -le $2 ];do [ $j -lt $2 ] && while [[ ${a[$j]} -gt $temp ]] ;do j=$(($j+1)) done i=$(($i+1)) swap $i $j j=$(($j+1)) done fun 0 $(($i-1)) fun $(($i+2)) $2}fun 0 15for((i=0;i<16;i++)){ echo -n ${a[$i]} “ ”}echoexit 0

下面是C++快速排序的对照代码

#includeusing namespace std;void swap(int *a,int *b){ int temp = *a; *a = *b; *b = temp;}void Grial(int a[],int x,int y){ int i=x-1; int j=x; if(x>=y)return; int temp = a[y]; while(j<=y) { while(ja[y]) j++; i++; swap(&a[i],&a[j]); j++; } Grial(a,0,i-1); Grial(a,i+1,y);}int main(){ int a[]={4,3,921,30495,28,43716,3,4,0,0,2,0,0,1,8,5}; Grial(a,0,14); for(int i=0;i<15;i++) { cout<

篇7:shell基础Unix系统

}} Shell变量名使用的特殊字符 $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双括号括起 $* 所有参数,用双括号括起 $n 位置参

}}

Shell变量名使用的特殊字符

$# 传送给命令Shell的参数序号

$- 在Shell启动或使用set命令时提供选项

$? 上一条命令执行后返回的值

$$ 当前shell的进程号

$! 上一个子进程的进程号

$@ 所有的参数,每个都用双括号括起

$* 所有参数,用双括号括起

$n 位置参数值,n表示位置

当前shell名

echo “$HOME $PATH”

结果显示$/u/ice_walk/bin:/etc:/usr/bin

echo '$HOME $PATH' 结果显示$HOME $PATH

shell的逃逸符是一个“\\”,表示其后的字符不具有特殊的含义或不是shell的函数

echo $HOME $PATH

结果显$$HOME /bin:/etc:/usr/bin:

可以用变量和其他字符组成新的字,例如:

SUN=sun

echo $day

sunday

用户也可以在命令行上同时对多个变量赋值,赋值语句之间用空格分开:

X=x Y=y

注意变量赋值是从右到左进行的

}}}

expr命令将把一个算术表达式作为参数,通常形式如下:

expr [数字] [操作符] [数字]

由于Shell是按字符形式存储变量的,所以用户必须保证参加算术运算的操作数必须为数值,下面是有效的算术操作符:

+ 两个整数相加

- 第一个数减去第二个数

* 两整数相乘

/ 第一个整数除以第二个整数

% 两整数相除,取余数

用户不能单纯使用“*”做乘法,若输入:

$expr 4*5

系统将会报错,因为Shell看到“*”将会首先进行文件名替换。正确形式为:

$expr 4 \\* 5

结果显示:20

{{{{shell样例 注意:}}}}

#!/bin/bash

flag=1

top=10000

date >>/backup1/time.txt

while [ $flag -lt $top ] -lt是小于 注意 需要用[ ],且注意 [后 和]后,都有空格

do

cd /backup1/check

dd if=/dev/zero f=test_$flag.txt bs=1024 count=2000000

rm -f test_$flag.txt

flag=`expr $flag + 1`  注意 左边 需要用flag而不是$flag表示 给变量值,特别注意是=号,前后 不能有空格,而且 expr $flag + 1 需要用执行符``包括

done

}}}}}

echo命令可以使用一些特殊的逃逸字符进行格式化输出,下面是这些字符及其含义:

\\b Backspace

\\c 显示后不换行

\\f 在终端上屏幕的开始处显示

\\n 换行

\\r 回车

\\t 制表符

\\v 垂直制表符

\\ 反斜框

nnn 用1,2或3位8进制整数表示一个ASCII码字符

echo -en $“\\t\\tPress 'I' to enter interactive startup.”

-e表示 允许\\有新的意义

-n表示 不换行 如果 和 “”内的参数 有冲突,以“”内为准

}}

测试字符串间的关系

有关串的操作符如下:

str1 = str2当两个串有相同内容、长度时为真

str1 != str2当串str1和str2不等时为真

-n str1 当串的长度大于0时为真(串非空)

-z str1 当串的长度为0时为真(空串)

str1  当串str1为非空时为真

if [ -z “$IN_INITLOG” ]; 字符使用时 用“”

有关文件的测试

使用test进行的第三类测试是测试文件的状态,用户可以测试文件是否存在,是否可写以及其他文件属性,

下面是文件测试时使用的选项。注意只有文件存在时,才有可能为真。

-r file 用户可读为真

-w file 用户可写为真

-x file 用户可执行为真

-f file 文件为正规文件为真

-d file 文件为目录为真

-c file 文件为字符特殊文件为真

-b file 文件为块特殊文件为真

-s file 文件大小非0时为真

-t file 当文件描述符(默认为1)指定的设备为终端时为真

复杂的条件测试(and 、or 、not)

-a 与

-o 或

! 非

就是组合条件了,任何高级语言中都有的(NOT 、AND 、OR),例如:

$test -r em.null -a -s em.null

$echo $?

结果显示:1

说明了em.null并不是可读并且非空的文件

测试两个整数之间关系

test命令与expr命令一样,也可以把字符转变成整数,然后对其操作。test命令对两个数进行比较,使用的操作符如下:

int1 -eq int2 两数相等为真 equal   (eq)

int1 -ne int2 两数不等为真 not equal  (ne)

int1 -gt int2 int1大于int2为真  great  (gt)

int1 -ge int2 int1大于等于int2为真 great equal (ge)

int1 -lt int2 int1小于int2为真  less than (lt)

int1 -le int2 int1小于等于int2为真 less than equal (le)

本阶段 小程序:

使用while循环使程序执行一次可以备份多个用户指定的目录。代码如下:

echo “欢迎使用备份小程序”

ANS=Y

while [ $ANS = Y -o $ANS = y ]

do

echo _

#读目录名

echo “输入要备份的目录名:\\c”

read DIR

if [ ! -d $DIR ]

then

echo “$DIR不是一个目录!”

exit 1

fi

cd $DIR

echo “请选择:”

echo _

echo “1 恢复数据到 $DIR”

echo “2 备份$DIR的数据”

echo

echo “请选择:\\c”

read CHOICE

case “$CHOICE” in

1) echo “恢复中… …”

cpio -i 2) echo “备份中… …”

cpio -o >/dev/rmt0;;

*) echo “选择无效”

esac

if [ $? -ne 0 ]

then

echo “cpio执行过程中出现问题”

exit 2

fi

echo “继续别的目录吗?(Y/y)\\c”

read ANS

done

2。

if [ $# -eq 0 ]

then

echo “Usage:x_shift2.sh 参数”

exit 1

fi

3。

I=1

while [ $I -lt 10 ]

do

{

echo “$I\\c”

I=`expr $I + 1`

if [ $I -eq 3 ]

then

continue

fi

if [ $I -eq 7 ]

then

break

fi

}

done

原文转自:www.ltesting.net

系统思维概述

shell编程中的字符串截取方法小结

如何系统有效的学习android编程

Unix/Linux系统下轻量级Shell工具

系统架构工程师的主要职责概述

第 8 部分:安全 shell 及文件共享Windows系统

编程简历范文

Unix系列shell程序编写(上)转自yesky.comWindows系统

项目概述范文

组织概述范文

Shell编程概述Unix系统(共7篇)

欢迎下载DOC格式的Shell编程概述Unix系统,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档