Bourne Shell及shell编程.pdf

上传人:赵** 文档编号:49563919 上传时间:2022-10-09 格式:PDF 页数:25 大小:527.35KB
返回 下载 相关 举报
Bourne Shell及shell编程.pdf_第1页
第1页 / 共25页
Bourne Shell及shell编程.pdf_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《Bourne Shell及shell编程.pdf》由会员分享,可在线阅读,更多相关《Bourne Shell及shell编程.pdf(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Bourne Shell 及 shell 编程(1)Bourne Shell介绍:Bourne Shell 基础及其他很多有用的特性,shell 编程及组织。主要内容:.shell 基础 基本介绍,环境,选项,特殊字符.shell 变量 用户定义变量,环境变量,位置变量(shell 参数).shell script 编程条件测试,循环及重复控制.shell 定制1.shell 基础知识(1)shell 提示符及其环境/etc/passwd 文件提示符:$/etc/profile$HOME/.profile(2)shell 执行选项-n 测试 shell script 语法结构,只读取 shel

2、l script 但不执行-x 进入跟踪方式,显示所执行的每一条命令,用于调度-a Tag all variables for export-c string 从 strings 中读取命令-e 非交互方式-f 关闭 shell 文件名产生功能-h locate and remember functions as defind-i 交互方式-k 从环境变量中读取命令的参数-r 限制方式-s 从标准输入读取命令-t 执行命令后退出(shell exits)-u 在替换中如使用未定义变量为错误-v verbose,显示 shell 输入行这些选项可以联合使用,但有些显然相互冲突,如-e 和-i.(

3、3)受限制 shell(Restircted Shell)sh-r 或/bin/rsh不能执行如下操作:cd,更改 PATH,指定全路径名,输出重定向,因此可以提供一个较好的控制和安全机制。通常rsh 用于应用型用户及拨号用户,这些用户通常是看不到提示符的。通常受限制用户的主目录是不可写的。不足:如果用户可以调用sh,则 rsh 的限制将不在起作用,事实上如果用户在vi 及 more程序中调用 shell,而这时 rsh 的限制将不再起作用。(4)用 set 改变 shell 选项用户可以在$提示符下用 set 命令来设置或取消 shell 的选项。使用-设置选项,+取消相应选项,大多数 UN

4、IX 系统允许 a,e,f,h,k,n,u,v 和 x 的开关设置/取消。set-xv启动跟踪方式;显示所有的命令及替换,同样显示输入。set-tu关闭在替换时对未定义变量的检查。使用 echo$-显示所有已设置的 shell 选项。(5)用户启动文件.profilePATH=$PA TH:/usr/loacl/bin;export PATH(6)shell 环境变量CDPA TH 用于 cd 命令的查找路径HOME/etc/passwd 文件中列出的用户主目录IFS Internal Field Separator,默认为空格,tab 及换行符MAIL/var/mail/$USERNAME

5、mail等程序使用PATHPS1,PS2 默认提示符($)及换行提示符()TERM 终端类型,常用的有 vt100,ansi,vt200,xterm等示例:$PS1=test:;export PS1test:PS1=$;export PS1$echo$MAIL/var/mail/username(7)保留字符及其含义$shell 变量名的开始,如$var|管道,将标准输出转到下一个命令的标准输入#注释开始&在后台执行一个进程?匹配一个字符*匹配 0 到多个字符(与 DOS 不同,可在文件名中间使用,并且含.)$-使用 set 及执行时传递给 shell 的标志位$!最后一个子进程的进程号$#传

6、递给 shell script 的参数个数$*传递给 shell script 的参数$所有参数,个别的用双引号括起来$?上一个命令的返回代码$0 当前 shell 的名字$n(n:1-)位置参数$进程标识号(Process Identifier Number,PID)file 输出重定向command 命令替换,如 filename=basename/usr/local/bin/tcshfiile 输出重定向,append转义符及单引号:$echo$HOME$PATH/home/hbwork/opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R

7、6/bin:$echo$HOME$PATH$HOME$PATH$echo$HOME$PATH$HOME/opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hbwork/bin其他:$dir=ls$dir$alias dir ls$dirls filelistls filelistwc-l filelistwc-l filelistsleep 5;echo 5 seconds reaches;ls-lps ax|egrep inetdfind/-name core-exec rm ;&filename=date+%Y%m%

8、d.log2.shell 变量变量:代表某些值的符号,如$HOME,cd 命令查找$HOME,在计算机语言中可以使用变量可以进行多种运算和控制。Bourne Shell 有如下四种变量:.用户自定义变量.位置变量即 shell script 之参数.预定义变量(特殊变量).环境变量(参考 shell 定制部分)(1)用户自定义变量(数据的存储)$COUNT=1$NAME=He Binwu技巧:因为大部分 UNIX 命令使用小写字符,因此在shell 编程中通常使用全大写变量,当然这并不是强制性的,但使用大写字符可以在编程中方便地识别变量。变量的调用:在变量前加$echo$HOME/home/h

9、bwork$WEEK=Satur$echo Today is$WEEKdayToday is$echo Today is$WEEKdayToday is SaturdayShell 变量赋值从右从左进行(Linux Shell/bash 从左向右赋值!)$X=$Y Y=y$echo$Xy$Z=z Y=$Z$echo$Y$使用 unset 命令删除变量的赋值$Z=hello$echo$Zhello$unset Z$echo$Z$有条件的命令替换在 Bourne Shell 中可以使变量替换在特定条件下执行,即有条件的环境变量替换。这种变量替换总是用大括号括起来的。.设置变量的默认值在变量未赋值之

10、前其值为空。Bourne Shell 允许对变量设置默认值,其格式如下:$variable:-defaultvalue例:$echo Hello$UNAMEHello$echo Hello$UNAME:-thereHello there$echo$UNAME#变量值并未发生变化$UNAME=hbwork$echo Hello$UNAME:-thereHello hbwork$.另一种情况:改变变量的值,格式如下:$variable:=value例:$echo Hello$UNAMEHello$echo Hello$UNAME:=thereHello there$echo$UNAME#变量值并未

11、发生变化there$.变量替换中使用命令替换$USERDIR=$MYDIR:-pwd.在变量已赋值时进行替换$variable:+value.带有错误检查的有条件变量替换$variable:?value例:$UNAME=$echo$UNAME:?UNAME has not been setUNAME:UNAME has not been set$echo$UNAME:?UNAME:parameter null or not set(2)位置变量(Shell 参数)在 shell script 中位置参数可用$1.$9 表示,$0 表示内容通常为当前执行程序的文件名。.防止变量值被替换 read

12、only variable.使用 export 命令输出变量,使得变量对子shell 可用,当 shell 执行一下程序时,shell将为其设置一个新的环境让其执行,这称之了subshell.在 Bourne Shell 中变量通常被认为是本地变量,也就是说在对其赋值之外的shell 环境之外是不认识此变量的。使用 export 对 subshell 可用。例:对变量 PS1 的 export 操作,shell 的提示符将发生变化。$PS1=hostname$peony$export PS1peony$shpeony$sh$echo$PS1peony$echo$PS1$-输出结果peony$/

13、dev/rmt/0h书写程序的目的是一次编程,多次使用(执行)!$cat backup.shcd/home/hbworkls*|cpio-o /dev/rmt/0hD执行:$sh backup.sh或:$chmod+x backup.sh$./backup.sh技巧:在 shell script 中加入必要的注释,以便以后阅读及维护。(2)shell 是一个(编程)语言同传统的编程语言一样,shell 提供了很多特性,这些特性可以使你的shell script编程更为有用,如:数据变量、参数传递、判断、流程控制、数据输入和输出,子程序及以中断处理等。.在 shell 编程中使用数据变量可以将程

14、序变量更为通用,如在上面backup.sh 中:cd$WORKDIRls*|cpio-o /dev/rmt/0h.Shell 编程中的注释以#开头.对 shell 变量进行数字运算,使用expr 命令expr integer operator integer其中 operator 为+-*/%,但对*的使用要用转义符,如:$expr 4*520$int=expr 5+7$echo$int12(3)Shell 编程的参数传递,可通过命令行参数以及交互式输入变量(read)restoreall.sh 对 backup.sh 程序的备份磁带进行恢复$cat restoreall.shcd$WORKD

15、IRcpio-i /dev/rmt/0hDrestore1.sh:只能恢复一个文件#restore1-program to restore a single filecd$WORKDIRcpio-i$i /dev/rmt/0h$restore1 file1恢复多个文件 restoreany:#restoreany-program to restore a single filecd$WORKDIRcpio-i$*/dev/rmt/0hrm-rf*改进如下:#当使用了管道命令时,管理命令的返回代码为最后一个命令的返回代码if ls-a|cpio-o /dev/rmt/0hthenrm-rf*fi

16、.if-then-else 语句if command_1thencommand_2elsecommand_3fi技巧:由于 shell 对命令中的多余的空格不作任何处理,一个好的程序员会用这一特性对自己的程序采用统一的缩进格式,以增强自己程序的可读性.使用 test 命令进行进行条件测试格式:test conditionstest 在以下四种情况下使用:a.字符比较 b.两个整数值的比较c.文件操作,如文件是否存在及文件的状态等d.逻辑操作,可以进行 and/or,与其他条件联合使用a.测试字符数据:shell 变量通常民政部下均作为字符变量str1=str2 二者相长,相同str1!=str

17、2 不同-n string string 不为空(长度不为零)-z string string 为空string string 不为空例:$str1=abcd#在含有空格时必须用引号括起来$test$str1=abcd$echo$?0$str1=abcd$test$str1=abcd$echo$?1Note:在 test 处理含有空格的变量时最好用引号将变量括起来,否则会出现错误的结果,因为 shell 在处理命令行时将会去掉多余的空格,而用引号括起来则可以防止shell 去掉这些空格.例:$str1=$test$str1$echo$?1$test$str1$echo$?0$test-n$st

18、r1test:argument expected$test-n$str1$echo$?0$b.整数测试:test 与 expr 相同,可以将字符型变量转换为整数进行操作,expr 进行整数的算术运算,而 test 则进行逻辑运算.表达式 说明-int1-eq int2 相等?int1-ne int2 不等?int1-gt int2 int1 int2?int1-ge int2 int1=int2?int1-lt int2 int1 int2?int1-le int2 int1 empty$test-r empty$echo$?0$test-s empty1$test!-s empty$echo

19、$?0e.测试条件之逻辑运算-a And-o Or例:$test-r empty-a-s empty$echo$?1f.进行 test 测试的标准方法因为 test 命令在 shell 编程中占有很重要的地位,为了使 shell 能同其他编程语言一样便于阅读和组织,Bourne Shell 在使用 test 测试时使用了另一种方法:用方括号将整个test 测试括起来:$int1=4$int1-gt 2$echo$?0例:重写 unload 程序,使用 test 测试#!/bin/sh#unload-program to backup and remove files#syntax:unload

20、 directory#check argumentsif$#-ne 1 thenecho usage:$0 directoryexit 1fi#check for valid directory nameif !-d$1 thenecho$1 is not a directoryexit 2ficd$1ls-a|cpio-o /dev/rmt/0hif$?-eq 0 thenrm-rf*elseecho A problem has occured in creating backupecho The directory will not be ereasedecho Please check

21、the backup deviceexit 3fi#end of unload在如上示例中出现了 exit,exit 有两个作用:一是停止程序中其他命令的执行,二是设置程序的退出状态g.if 嵌套及 elif 结构if commandthencommandelseif commandthencommandelseif commandthencommandfififi改进:使用 elif 结构if commandthencommandelif commandthencommandelif commandthencommandfielif 结构同 if 结构类似,但结构更清淅,其执行结果完全相同.

22、Bourne Shell 及 shell 编程(2)作者:何斌武(,大连理工大学网络中心,April 1999.)Bourne Shell 及 Shell 编程(2)h.交互式从键盘读入数据使用 read 语句,其格式如下:read var1 var2.varnread 将不作变量替换,但会删除多余的空格,直到遇到第一个换行符(回车),并将输入值依次赋值给相应的变量。例:$read var1 var2 var3Hello my friends$echo$var1$var2$var3Hello my friends$echo$var1Hello$read var1 var2 var3Hello

23、my dear friends$echo$var3dear friends-输入多余变量时,输入值余下的内容赋给最后一个变量$read var1 var2 var3Hello friends$echo$var3-var3 为空$在 shell script 中可使用 read 语句进行交互操作:.#echo-n message 输出结果后不换行echo-n Do you want to continue:Y or Nread ANSWERif$ANSWER=N-o$ANSWER=n thenexitfii.case 结构:结构较 elif-then 结构更清楚比较 if-then 语句:if

24、variable1=value1 thencommandcommandelif variable1=value2 thencommandcommandelif variable1=value3 thencommandcommandfi相应的 case 结构:case value inpattern1)commandcommand;pattern2)commandcommand;.patternn)command;esac*case 语句只执行第一个匹配模式例:使用 case 语句建立一个菜单选择shell script#Display a menuecho _echo 1 Restoreech

25、o 2 Backupecho 3 Unloadecho#Read and excute the users selectionecho-n Enter Choice:read CHOICEcase$CHOICE in1)echo Restore;2)echo Backup;3)echo Unload;*)echo Sorry$CHOICE is not a valid choiceexit 1esac在上例中,*指默认匹配动作。此外,case 模式中也可以使用逻辑操作,如下所示:pattern1|pattern2)commandcommand;这样可以将上面示例程序中允许用户输入数字或每一个大

26、写字母。case$CHOICE in1|R)echo Restore;2|B)echo Backup;3|U)echo Unload;*)echo Sorry$CHOICE is not a valid choiceexit 1esac(5)循环控制 while 循环:格式:while commanddocommandcommandcommand.done例:计算 1 到 5 的平方#!/bin/sh#Filename:square.shint=1while$int-le 5 dosq=expr$int*$intecho$sqint=expr$int+1doneecho Job complet

27、ed$sh square.sh1491625Job completed until 循环结构:格式:until manddone示例:使用 until 结构计算 1-5 的平方#!/bin/shint=1until$int-gt 5 dosq=expr$int*$intecho$sqint=expr$int+1doneecho Job completed 使用 shift 对不定长的参数进行处理在以上的示例中我们总是假设命令行参数唯一或其个数固定,或者使用$*将整个命令行参数传递给 shell script 进行处理。对于参数个数不固定并且希望对每个命令参数进行单独处理时则需要 shift 命

28、令。使用 shift 可以将命令行位置参数依次移动位置,即$2-$1,$3-$2.在移位之前的第一个位置参数$1 在移位后将不在存在。示例如下:#!/bin/sh#Filename:shifteruntil$#-eq 0 doecho Argument is$1 and expr$#-1 argument(s)remainshiftdone$shifter 1 2 3 4Argument is 1 and 3 argument(s)remainArgument is 2 and 2 argument(s)remainArgument is 3 and 1 argument(s)remainAr

29、gument is 4 and 0 argument(s)remain$使用 shift 时,每进行一次移位,$#减 1,使用这一特性可以用until 循环对每个参数进行处理,如下示例中是一个求整数和的shell script:#!/bin/sh#sumints-a program to sum a series of integers#if$#-eq 0 thenecho Usage:sumints integer listexit 1fisum=0until$#-eq 0 dosum=expr$sum+$1shiftdoneecho$sum$sh sumints 324 34 34 12

30、34438$使用 shift 的另一个原因是 Bourne Shell 的位置参数变量为$1$9,因此通过位置变量只能访问前 9 个参数。但这并不等于在命令行上最多只能输入9 个参数。此时如果想访问前 9 个参数之后的参数,就必须使用shift.另外 shift 后可加整数进行一次多个移位,如:shift 3.for 循环格式:for var in arg1 manddone示例:$for letter in a b c d e;do echo$letter;doneabcde对当前目录下的所有文件操作:$for i in*doif -f$i thenecho$i is a fileelif

31、-d$i echo$i is a directoryfidone求命令行上所有整数之和:#!/bin/shsum=0for INT in$*dosum=expr$sum+$INTdoneecho$sum 从循环中退出:break 和 continue 命令break 立即退出循环continue 忽略本循环中的其他命令,继续下一下循环在 shell 编程中有时我们要用到进行无限循环的技巧,也就是说这种循环一直执行碰到 break 或 continue 命令。这种无限循环通常是使用true 或 false 命令开始的。UNIX系统中的 true 总是返加 0 值,而 false 则返回非零值。如

32、下所示:#一直执行到程序执行了break 或用户强行中断时才结束循环while manddone上面所示的循环也可以使用until false,如下:until manddone在如下 shell script 中同时使用了 continue,break 以及 case 语句中的正规表达式用法:#!/bin/sh#Interactive program to restore,backup,or unload#a directoryecho Welcome to the menu driven Archive programwhile truedo#Display a Menuechoecho

33、Make a Choice from the Menu belowecho _echo 1 Restore Archiveecho 2 Backup directoryecho 3 Unload directoryecho 4 Quitecho#Read the users selectionecho-n Enter Choice:read CHOICEcase$CHOICE in1-3)echo#Read and validate the name of the directoryecho-n What directory do you want?read WORKDIRif !-d$WOR

34、KDIR thenecho Sorry,$WORKDIR is not a directorycontinuefi#Make the directory the current working directorycd$WORKDIR;4):;#:为空语句,不执行任何动作*)echo Sorry,$CHOICE is not a valid choicecontinueesaccase$CHOICE in1)echo Restoring.cpio-i2)echo Archiving.ls|cpio-o/dev/rmt/0h;3)echo Unloading.ls|cpio-o/dev/rmt/0

35、h;4)echo Quittingbreak;esac#Check for cpio errorsif$?-ne 0 thenecho A problem has occurred during the processif$CHOICE=3 thenecho The directory will not be erasedfiecho Please check the device and try againcontinueelseif$CHOICE=3 thenrm*fifidone(6)结构化编程:定义函数同其他高级语言一样,shell 也提供了函数功能。函数通常也称之为子过程(subro

36、utine),其定义格式如下:funcname()mand;#分号定义函数之后,可以在 shell 中对此函数进行调用,使用函数定义可以将一个复杂的程序分为多个可管理的程序段,如下所示:#start programsetup()command list;do_data()command list;cleanup()command list;errors()command list;setupdo_datacleanup#end program技巧:.在对函数命名时最好能使用有含义的名字,即函数名能够比较准确的描述函数所完成的任务。.为了程序的维护方便,请尽可能使用注释使用函数的另一个好处就是可

37、以在一个程序中的不同地方执行相同的命令序列(函数),如下所示:iscontinue()while truedoecho-n Continue?(Y/N)read ANSWERcase$ANSWER inYy)return 0;Nn)return 1;*)echo Answer Y or N;esacdone这样可以在 shell 编程中调用 iscontinue 确定是否继续执行:if iscontinuethencontinueelsebreakfi*shell 函数与 shell 程序非常相似,但二者有一个非常重要的差别:shell 程序是由子 shell执行的,而 shell 函数则是作

38、为当前 shell 的一部分被执行的,因此在当前shell 中可以改变函数的定义。此外在任意shell(包括交互式的 shell)中均可定义函数,如:$dirdir:not found$dir()ls-l;$dirtotal 5875-rw-r-r-1 hbwork 100 Nov 10 23:16 doc-rw-r-r-1 hbwork 2973806 Nov 10 23:47 ns40docs.zip-rw-r-r-1 hbwork 1715011 Nov 10 23:30 ns840usr.pdf-rw-r-r-1 hbwork 1273409 Sep 23 1998 radsol21b

39、6.tar.Z-rw-r-r-1 hbwork 7526 Nov 10 23:47 wget-log-rw-r-r-1 hbwork 1748 Nov 13 21:51 wget-log.1$unset dir$dir()echo Permission Link Owner Group File_SZ LastAccess FileName echo-ls-l$*;$dirPermission Link Owner Group File_SZ LastAccess FileName-total 5875-rw-r-r-1 hbwork 100 Nov 10 23:16 doc-rw-r-r-1

40、 hbwork 2973806 Nov 10 23:47 ns40docs.zip-rw-r-r-1 hbwork 1715011 Nov 10 23:30 ns840usr.pdf-rw-r-r-1 hbwork 1273409 Sep 23 1998 radsol21b6.tar.Z-rw-r-r-1 hbwork 7526 Nov 10 23:47 wget-log-rw-r-r-1 hbwork 1748 Nov 13 21:51 wget-log.1通常情况下,shell script 是在子 shell 中执行的,困此在此子shell 中对变量所作的修改对父 shell 不起作用。

41、点(.)命令使用 shell 在不创建子 shell 而由当前 shell 读取并执行一个 shell script,可以通过这种方式来定义函数及变量。此外点(.)命令最常用的功能就是通过读取.profile 来重新配置初始化 login 变量。如下所示:$.profile(csh 相对于.命令的是 source 命令).(7)使用 And/Or 结构进行有条件的命令执行 And,仅当第一个命令成功时才有执行后一个命令,如同在逻辑与表达式中如果前面的结果为真时才有必要继续运算,否则结果肯定为假。格式如下:command1&command2例:rm$TEMPDIR/*&echo File suc

42、cessfully removed等价于if rm$TEMPDIR/*thenecho File successfully removedfiOr,与 AND 相反,仅当前一个命令执行出错时才执行后一条命令例:rm$TEMPDIR/*|echo File not removed等价与:if rm$TEMPDIR/*thencommandelseecho File not removedfi 混合命令条件执行command1&command2&command3当 command1,command2成功时才执行 command3command1&command2|comamnd3仅当 comman

43、d1 成功,command2 失败时才执行 command3当然可以根据自己的需要进行多种条件命令的组合,在此不多讲述。(8)使用 getopts 命令读取 unix 格式选项UNIX 格式选项指如下格式的命令行参数:command-options parameters使用格式:getopts option_string variable具体使用方法请参考 getopts 的在线文档(man getopts).示例如下:#newdateif$#-lt 1 thendateelsewhile getopts mdyDHMSTjJwahr OPTIONdocase$OPTIONinm)date+%

44、m;#Month of Yeard)date+%d;#Day of Monthy)date+%y;#YearD)date+%D;#MM/DD/YYH)date+%H;#HourM)date+%M;#MinuteS)date+%S;#SecondT)date+%T;#HH:MM:SSj)date+%j;#day of yearJ)date+%y%j;#5 digit Julian datew)date+%w;#Day of the Weeka)date+%a;#Day abbreviationh)date+%h;#Month abbreviationr)date+%r;#AM-PM time?)

45、echo Invalid option$OPTION;esacdonefi$newdate-J94031$newdate-a-h-dMonJan31$newdate-ahdMonJan31$示例程序:复制程序#Syntax:duplicate-c integer-v filename#where integer is the number of duplicate copies#and-v is the verbose optionCOPIES=1VERBOSE=Nwhile getopts vc:OPTIONdocase$OPTIONinc)COPIES=$OPTARG;v)VERBOSE=

46、Y;?)echo Illegal Optionexit 1;esacdoneif$OPTIND-gt$#thenecho No file name specifiedexit 2fishift expr$OPTIND-1FILE=$1COPY=0while$COPIES-gt$COPY doCOPY=expr$COPY+1cp$FILE$FILE$COPYif VERBOSE=Y thenecho$FILE$COPYfidone$duplicate-v fileAfileA1$duplicate-c 3-v fileBfileB1fileB2fileB34.Shell 的定制通常使用 shel

47、l 的定制来控制用户自己的环境,比如改变shell 的外观(提示符)以及增强自己的命令。(1)通常环境变量来定制 shell通常改变环境变量可以定制shell 的工作环境。shell 在处理信息时会参考这些环境变量,改变环境变量的值在一定程度上改变shell 的操作方式,比如改变命令行提示符。.使用 IFS 增加命令行分隔符默认状态下 shell 的分隔符为空格、制表符及换行符,但可以通过改变IFS 的值加入自己的分隔符。如下所示:$IFS=:$echo:Hello:my:FriendHello my Friend(2)加入自己的命令及函数如下程序:#Directory and Prompt

48、change program#Syntax:chdir directoryif !-d$1 thenecho$1 is not a directoryexit 1ficd$1PS1=pwd$export PS1$chdir/usr/home/teresa$但此程序在执行时系统提示符并不会改变,因为此程序是在子shell 中执行的。因此其变量对当前 shell 并无影响,要想对当前 shell 起作用,最好是将此作为函数写在自己的.profile 中或建立自己的个人函数文件.persfuncs#Personal function file persfuncschdir()#Directory a

49、nd Prompt change program#Syntax:chdir directoryif !-d$1 thenecho$1 is not a directoryexit 1ficd$1PS1=pwd$export PS1;再执行:$.persfuncs$chdir temp/home/hbbwork/temp$也可在自己的.profile 文件中用.persfuncs 调用.persfuncs.说明:在 bash/tcsh 中已经使用别名,相对而言别名比此方法更为方便。5.有关 shell 的专门讨论(1)shell 程序的调试切记:程序员(人)总是会犯错误的,而计算机是不会错的。使

50、用-x 进行跟踪执行,执行并显示每一条指令。(2)命令组用小括号将一组命令括起来,则这些命令会由子shell 来完成;而command_list;则在当前 shell 中执行。这两者的主要区别在于其对shell 变量的影响,子 shell 执行的命令不会影响当前 shell 中的变量。$NUMBER=2$(A=2;B=2;NUMBER=expr$A+$B;echo$NUMBER)4$echo$NUMBER2$A=2;B=2;NUMBER=expr$A+$B;echo$NUMBER;4$echo$NUMBER4总结:在本章中讲述了 Bourne Shell 的基本知识,使用 shell 变量,s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁