欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    linux的 Shell编程基础.doc

    • 资源ID:70331086       资源大小:107KB        全文页数:16页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    linux的 Shell编程基础.doc

    Shell 编程基础shell 是用于用户和内核之间相互通信的应用程序。bash 是一种解释器,用于解释shell命令Shell 种类适用系统特点bashX86,linux系统默认shell功能 强大ashembedded 嵌入式系统体积小功能小巧用于嵌入式产品csh网络常用于网络管理注:如没有特殊要求,shell的脚本文件扩展名应为 xx.sh例:vi text.sh - 1 #!/bin/bash (指定对脚本解释的shell程序) 2 #program (#用于解释) 3 # Use . 4 #history 5 #2009.5.16 night mzy 6 echo "Please input score"-Shell脚本执行方法:1) 直接运行: vitext.sh chmoda+x test.sh./text.sh特点:重新启动一个文件制定的shell程序,用此shell对脚本进行解释执行。2) 指定shell 执行shell命令 text.sh (bash,ash,csh)(空格)text.sh特点:同上 3) 当前shell运行sourcetext.sh4) 当前shell运行.(空格)text.sh3和4的特点:用当前shell对脚本解释执行。Shell 变量 注: 在shell中变量无数据类型Shell中需要用变量来储存程序的数据。Shell 中的变量可分为三种:变量名命名规范:字母要大写,多个单词间以下划线分割。变量赋值变量名=值 (等号两端不能有空格,不加引号值也不能有空格)单引号赋值 A=hello everyone 单引号不支持特殊字符双引号赋值 B=“hello everyone !” 双引号支持特殊字符变量引用$变量名变量释放unset 变量名·局部变量:用户在当前的进程和程序中有效的变量。·环境变量:是在一个用户的所有进程中都可以访问的变量。env 输出所有环境变量常用环境变量:PATH (设置可执shell命令文件目录) HOSTNAME(设置当前主机名称)命令export 查看所有环境变量,也可以用export来定义一个环境变量例:#export XX=1234之后另开一个终端 #echo $XX 1234上面的方法是在当前运行的所有进程中有效,系统重启后就会清除,只有把export XXX=1234写到环境变量配置文件/etc/profile中才会一直有效。·位置变量:shell在运行时传入的参数。$?上一条命令的运行结果,成功0,失败非0$1$9shell命令运行时的命令行参数$0就是命令名称$#$*$例一:新建a.sh文件执行结果#!/bin/bashecho $1echo $2echo $3echo $0rootlocalhost root#./a.sh a b c#a#b#c#./a.sh例二:rootlocalhost root# H='hello'rootlocalhost root# A='$H everyone !'单引号不支持特殊字符rootlocalhost root# B="$H everyone !"双引号支持特殊字符bash: !": event not foundrootlocalhost root# B="$H everyone /!"!是逻辑运算符非 /是转义符rootlocalhost root# echo $A$H everyone !rootlocalhost root# echo $Bhello everyone !rootlocalhost root# unset A B H清空变量值rootlocalhost root# echo $Arootlocalhost root# echo $Brootlocalhost root# echo $HShell 测试测试语法:test 测试符号 被测字符串或变量test 被测字符串或变量1 测试符号 被测字符串或变量2也可用 代替test 测试符号 被测字符串或变量 被测字符串或变量1 测试符号 被测字符串或变量2 注:一般用 而不用 test测试结果:真为0假为非0 一般为1 (切忌与C语言相反)文件测试符号字符串测试符号数值测试符号-f 是否为文件-d 是否为目录-L 是否为软链接-w 是否为可写-r 是否为可读-x 是否为可执行-s 长度是否大于0-u 是否有suid位设置= 两字符串是否相等!= 不等-n 为非空串-z 为空串 -eq 相等 -ne 不等 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于逻辑运算符 -a 与全1出1,有0出0 -o 或全0出0,有1出1 ! 非取反例1 -r a.txt a w a.txt 判断文件a.txt是否可读并且可写 -r a.txt a ! w a.txt 判断文件a.txt是否可读并且不可写例2rootlocalhost root# A="12 3 "rootlocalhost root# $A = "456" bash: : too many arguments语法错误,因为变量$A不加“”时电脑把12 3带入等式为12 3 = "456" 此时2和3之间的空格导致语法错误解决办法就是把变量两边也加上“”如下rootlocalhost root# "$A" = "456" rootlocalhost root# echo $?1rootlocalhost root#注:以后变量都要加上“”以免疏忽出错Shell 算术运算算术运算符 + 加- 减* 乘/ 除% 取模+=-=*=/=%= * 幂运算例:A=expr 3 * 2 echo $A9算数运算命令 exprexpr 值1 运算符 值2例:#echo expr 1 + 2 这里的是tab上面的反引号键反引号:引起的是一条shell命令,如果出现在脚本中,shell先执行反引号中的命令,并且用其运行结果替换反引号及其内容,然后继续执行。也可写成 #echo $ 1 + 2 或 #B=let 1 + 2 #echo $B 3let不常用。Shell 流程控制if 语句:单分支双分支嵌套if 测试 then 命令组fiif 测试 then 命令组1else 命令组2fiif 测试 then 命令组1elif 测试 then 命令组2 。 。 。else 命令组nfiif 语句也可将then写在if条件之后,中间用分号隔开。if 测试 ; then 命令组1elif 测试 ; then命令组2else 命令组3fi例:#!/bin/bash#programecho "Please input score"read SCORE read作用是从键盘输入变量,相当于if $SCORE -ge 90 C语言中的scanf,用法:read 变量名then echo "good"elif $SCORE -ge 60 then echo "ordinary"elif $SCORE -ge 50 then echo "bad"else echo "very bad"fiunset SCORE unset作用是释放变量 用法:unset 变量运行结果:rootlocalhost shell_program# . if_example.sh95great !三种循环while ,until和for 语句:while 测试 (真循环,假退出)do 命令组done-while : (死循环)do 命令组doneuntil 测试 (真退出,假循环)do 命令组donebreak 退出循环 continue 跳出当次循环for 变量名 in 列表 (用列表中的每一项给变量赋值,do 列表中有几项就循环几次)命令组 done当for语句省略后面的in关键字时,将接受输入命令时的参数作为循环变量集。例:#!bin/bash#for_example_in.shfor strdo echo $strdoneunset str执行:rootlocalhost shell_program# . for_example_in.sh a b c d eabcdewhile 例:1+2+3+.+100=?#!/bin/bashSUM=0I=1while $I -lt 100 do I=expr $I + 1 SUM=expr $SUM + $Idoneecho $SUMunset SUM Iuntil 例:#!/bin/bashSUM=0I=1while $I -lt 100 do I=expr $I + 1 SUM=expr $SUM + $Idoneecho $SUMunset SUM Ifor 例1:统计root目录下有多少文件和目录#!/bin/bashfor FILE_NAME in /root/*do if -d $FILE_NAME then FILE=expr $FILE + 1 else CONTENT=expr $CONTENT + 1 fidoneecho "file is $FILE"echo "conent is $CONTENT"unset FILE_NAME FILE CONTENTrootlocalhost shell_program# . for_example.shfile is 6conent is 5for 的嵌套 例2:九九表#!bin/bash#for_example_nest.shfor i in 1 2 3 4 5 6 7 8 9do for j in 1 2 3 4 5 6 7 8 9 do if $j -le $i then echo -e "$jc" echo -e "*c" echo -e "$ic" echo -e "=c" echo -e "$ $i * $j c" fi done echo " "doneunset i jrootlocalhost shell_program# . for_example_nest.sh1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81case语句:case $变量名 in模式1) 命令组1 ;模式2) 命令组2 ;。*) 命令组nesac模式:用整数或字符串 也可用正则表达式和 ? *例: a0-9 0-50-9a? a*例:学生成绩判断等级#!/bin/bash#programecho "please input zhe stdent'score"read SCOREcase $SCORE in 90-9) echo "good" ; 6-80-9) echo "ordinary" 0-51-9) echo "bad" 100) echo "very good" *) echo "Input not number! error!"esacunset SCORE注:1):a0-9 表示取括号中的任意一项 2):a-dA-D 表示a到d A到D 3):*)表示其他,相当于C语言中的defaultrootlocalhost shell_program# . case_example.sh90Goodrootlocalhost shell_program# . case_example.sh1badrootlocalhost shell_program# . case_example.shdjk;hvdf;bhInput not number! error!Shell 的输入输出文件重定向command > filename把标准输出重定向到一个文件中command >> filename把标准输出以追加的形式重定向到一个文件中command 1 > filename把标准输出重定向到一个文件中command > filename 2>&1把标准输出和标准错误一起重定向到一个文件中command 2 > filename把标准错误重定向到一个文件中command 2 >> filename把标准错误以追加的形式重定向到一个文件中command >> filename 2>&1把标准输出和标准错误一起追加到一个文件中command < filename > filenametwoCommand命令以filename文件作为标准输入,以filenametwo文件作为标准输出command < filenameCommand命令以filename文件作为标准输入1:表示stdout标准输出 2:表示stderr标准错误 stdin例:rootlocalhost shell_program# cat a.txta b c d e f grootlocalhost shell_program# tr "a-z" "A-Z" < a.txt > b.txtrootlocalhost shell_program# cat b.txtA B C D E F Gecho 命令输出结果echo命令可以输出文本或变量的值,是shell中最常用的输出方式。结果可以输出到终端,也可以写入到文件。例:echo $str #将结果输出到终端echo $str > file #将结果重定向到file中,没有file文件就创建,有则覆盖 echo $str >>file #将结果追加到file文件中echo输出的内容可以有下面的格式控制字符: c :结尾加上c表示这行输完毕以后不换行。 t : 输出一个跳格,相当于按下tab键 n :输出一个换行注:如果要输出特殊字符,必须加-e参数,否则输出的结果中会直接打出字符,加-n参数可以禁止echo输出后的换行。例:rootlocalhost root# echo "hello ,nBrjing"hello ,nBrjingrootlocalhost root# echo -e "hello ,nBrjing"hello ,Brjingrootlocalhost root# echo -e "hello ,tttBrjing"hello , Brjingread 命令读取信息read 命令可以从键盘或文件中读入信息,并附给变量。 如果输入多个变量,用空格将将输入的变量隔开,如果输入的变量个数多于需要读取变量的个数,将会把剩余的变量赋值给最后一个变量。 在读取语句后面加上<filename,表示从文件中读取数据,并且赋值给变量。例:rootlocalhost root# read A B Caaa bbb cccrootlocalhost root# echo -e "$A n$B n$C"aaabbbcccrootlocalhost root# read A Baaa bbb ccc dddrootlocalhost root# echo -e "$A n$B"aaabbb ccc ddd引号的使用”双引号:表示引用一个字符串。如果字符串里没有空格,A=123 和 A=”123”是一样的。字符串不能直接输出$引号 双引号 反斜线 反引号,需要前面用转义字符”。例:rootlocalhost root# A=123rootlocalhost root# echo $A123rootlocalhost root# B=123rootlocalhost root# echo $B123rootlocalhost root# A=12 3bash: 3: command not foundrootlocalhost root# A="12 3"rootlocalhost root# echo $A12 3rootlocalhost root# B="12"3""rootlocalhost root# echo $B123rootlocalhost root# B='$12"3"'rootlocalhost root# echo $B$12"3"rootlocalhost root# B="1 2 3"rootlocalhost root# A="$B $B " ' ! "rootlocalhost root# echo $A1 2 3 $B " ' ! 单引号:表示引用一个字符串。用法与双引号相似。但不能使用$引号 双引号 反斜线 反引号。如果双引号中再使用单引号,字符串输出时,会输出这个单引号。例:rootlocalhost root# A="12 '3'"rootlocalhost root# echo $A12 '3'rootlocalhost root# B="$A"rootlocalhost root# echo $B12 '3'rootlocalhost root# C='$A'rootlocalhost root# echo $C$Arootlocalhost root# B='$12"3"'rootlocalhost root# echo $B$12"3"反引号:用于执行引号中的系统命令,然后将命令的结果返回。例:rootlocalhost root# A=lsrootlocalhost root# echo $Aanaconda-ks.cfg Desktop embwork friend_program install.log install.log.syslog minicom.log new_class NFS program service_teacher.sh反斜线:用于对特殊字符进行转义。如果字符串中含有& * + $ “ | ?这些特殊字符串,shell会认为这些符号代表着相应的运算。可以用反斜线来对这些字符串进行转义。例:rootlocalhost root# A=&*+$"|?rootlocalhost root# echo $A&*+$"|?综合练习:启动linux各项服务的shell脚本。#!/bin/bash#name test3.sh#author qy2009function choose_service ()clearcat << MENU- whoami date +%d-%m-%Y-1. HTTP service2. ftp service3. samba service4. sshy service5. nfs service6. exit-MENUecho -n "enter your choose:"read SERVICEcase $SERVICE in1) SERVICE=httpd ;2) SERVICE=vsftpd ;3) SERVICE=smb ;4) SERVICE=sshd ;5) SERVICE=nfs ;6) exit 0 ;esacfunction choose_action() clearcat<<MENU-1. start $1 servie2. stop $1 servie3. restart $1 servie4. back-MENUecho -n "enter your choose:"read ACTIONcase $ACTION in1) ACTION=start ;2) ACTION=stop ;3) ACTION=restart ;4) ACTION= ;esacfunction reback() service $1 $2 if $? then RES=Success else RES=Failure fiwhile :do choose_service choose_action if $ACTION = '' then continue else reback $SERVICE $ACTION echo "$ACTION $SERVICE $RES" fi echo "Press any key to continue ." done unset SERVICE ACTION RES

    注意事项

    本文(linux的 Shell编程基础.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开