欢迎来到天天文库
浏览记录
ID:34113016
大小:118.86 KB
页数:12页
时间:2019-03-03
《shell编程基础-ubuntu中文》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Shell编程基础出自Ubuntu中文我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):#!/bin/bash...注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tcshell改为tcsh,其他类似。符号#!用来告诉系统执行该脚本的程序,本例使用/bin/bash。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:chmod+xfilename此后在该脚本所在目录下,输入./f
2、ilename即可执行该脚本。变量赋值和引用Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:1.首个字符必须为字母(a-z,A-Z)或者_2.中间不能有空格,可以使用下划线(_)3.不能使用其他标点符号需要给变量赋值时,可以这么写:变量名=值要取用一个变量的值,只需在变量名前面加一个$(注意:给变量赋值的时候,不能在"="两边留空格)#!/bin/bash#对变量赋值:a="helloworld"#等号两边均不能有空格存在#打印变量a的值:echo"Ais:"$a挑个自己喜欢的
3、编辑器,输入上述内容,并保存为文件first,然后执行chmod+xfirst使其可执行,最后输入./first执行该脚本。其输出结果如下:第1页共12页Ais:helloworld有时候变量名可能会和其它文字混淆,比如:num=2echo"thisisthe$numnd"上述脚本并不会输出"thisisthe2nd"而是"thisisthe";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:num=2echo"t
4、hisisthe${num}nd"其输出结果为:thisisthe2nd注意花括号的位置:num=2echo"thisisthe{$num}nd"其输出结果为:thisisthe{2}nd需要注意shell的默认赋值是字符串赋值。比如:var=1var=$var+1echo$var打印出来的不是2而是1+1。为了达到我们想要的效果有以下几种表达方式:let"var+=1"var="$[$var+1]"((var++))var=$(($var+1))var="$(expr"$var"+1)"#不建议使用
5、var="`expr"$var"+1`"#强烈不建议使用,注意加号两边的空格,否则还是按照字符串的方式赋值,`为Esc下方的`,而不是单引号'。注意:前2种方式在bash下有效,在sh下会出错。let表示数学运算,expr用于整数值运算,每一项用空格隔开,$[]将中括号内的表达式作为数学运算先计算结果再输出。Shell脚本中有许多变量是系统自动设定的,我们将在用到这些变量时再作说明。除了只在脚本内有效的普通shell变量外,还有环境变量,即那些由export关键字处理过的变量。本文不讨论环境变量,因为
6、它们一般只在登录脚本中用到。Shell里的流程控制if语句第2页共12页"if"表达式如果条件为真,则执行then后的部分:if....;then....elif....;then....else....fi大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用"[]"来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。[-f"somefile"]:判断是否是一个文件[-x"/bin/ls"]:判断/bin/ls是否存在并有可执行权限[-
7、n"$var"]:判断$var变量是否有值["$a"="$b"]:判断$a和$b是否相等执行mantest可以查看所有测试表达式可以比较和判断的类型。下面是一个简单的if语句:#!/bin/bashif[${SHELL}="/bin/bash"];thenecho"yourloginshellisthebash(bourneagainshell)"elseecho"yourloginshellisnotbashbut${SHELL}"fi变量$SHELL包含有登录shell的名称,我们拿它和/bin/
8、bash进行比较以判断当前使用的shell是否为bash。&&和
9、
10、操作符熟悉C语言的朋友可能会喜欢下面的表达式:[-f"/etc/shadow"]&&echo"Thiscomputerusesshadowpasswords"这里的&&就是一个快捷操作符,如果左边的表达式为真则执行右边的语句,你也可以把它看作逻辑运算里的与操作。上述脚本表示如果/etc/shadow文件存在,则打印“Thiscomputerusesshadowpasswords”。同样s
此文档下载收益归作者所有