1、$ls*.*$ls?*$echoa*$rm*$lsa-z*0-94 4退出状态退出状态p每个程序或命令执行完后,都会给系统返回一个每个程序或命令执行完后,都会给系统返回一个每个程序或命令执行完后,都会给系统返回一个每个程序或命令执行完后,都会给系统返回一个退出状态,指示是否成功运行退出状态,指示是否成功运行退出状态,指示是否成功运行退出状态,指示是否成功运行p退出状态用数值表示:退出状态用数值表示:成功执行:0 0否则:非零值否则:非零值(说明执行失败或某处有错误说明执行失败或某处有错误说明执行失败或某处有错误说明执行失败或某处有错误)p特定变量参数特定变量参数特定变量参数特定变量参数$?$?
2、保存最后程序的退出状态值保存最后程序的退出状态值保存最后程序的退出状态值保存最后程序的退出状态值检验退出状态命令:检验退出状态命令:$echo$?echo$?5 5exit 命令命令pexitexit是是ShellShell的一个内建命令,使用它可以立即终止的一个内建命令,使用它可以立即终止ShellShell程序的执行程序的执行p格式:格式:exit nexit nexit nexit n其中,其中,n n为一数字,表示希望返回的退出状态。如为一数字,表示希望返回的退出状态。如果不指定,就采用果不指定,就采用exitexit之前最后所执行命令的退出之前最后所执行命令的退出状态状态00成功执行
3、成功执行非非00执行失败或某处有错误执行失败或某处有错误执行失败或某处有错误执行失败或某处有错误p提示提示如果直接在终端上执行如果直接在终端上执行exitexit命令,会导致从系统注命令,会导致从系统注销,因为它会终止登陆销,因为它会终止登陆ShellShell的执行。的执行。6 6&和和|p命令1 1&命令2 2 只有命令1为真(即成功被执行,返回0),命令2才能够被执行。$lslslsls s*s*s*s*&rmrmrmrm s*s*s*s*p命令1 1|命令2 2 如果命令1 1执行失败,那么就执行命令2。$cdcdcdcd/dir1/dir1/dir1/dir1|echo cannot
4、 change to/dir1echo cannot change to/dir1echo cannot change to/dir1echo cannot change to/dir17 7算术表达式的计算算术表达式的计算p 若要计算表达式若要计算表达式2*i+12*i+1的值?的值?$i=2i=2$echo2*$i+1echo2*$i+1p 如何进行变量的整数运算?如何进行变量的整数运算?$echo$(2*i+1)echo$(2*i+1)2*2+12*2+15 5算术扩展算术扩展8 8Shell的算术扩展的算术扩展p算数扩展提供变量的算数扩展提供变量的整数运算整数运算机制机制pShellS
5、hell的内建命令,老版本的的内建命令,老版本的ShellShell可能不支持可能不支持p形形式:式:$(expressionexpression)expressionexpression:算术表达式,由变量和运算符组成,运算算术表达式,由变量和运算符组成,运算符源于符源于c c语言语言语言语言。p用法用法:显示输出:echoecho$($(expression)expression)变量赋值变量赋值:variable=variable=$($(expression)expression)如如:$(2*i+1)9 9Shell的算术扩展的算术扩展qq$($(expression)express
6、ion)举举例:例:计算表达式计算表达式计算表达式计算表达式2*i+12*i+1的值的值的值的值$i=2i=2$echoecho$(2*$(2*i i+1)+1)算术扩展中包含的只有变量、运算符和常数。算术扩展中包含的只有变量、运算符和常数。$echoecho$(2*(i+1)$(2*(i+1)计算计算计算计算2*(i+1)2*(i+1)的值:的值:expressionexpression内可以使用括号来强制分内可以使用括号来强制分内可以使用括号来强制分内可以使用括号来强制分组组组组$echoecho$(2*(i+1)$(2*(i+1)在在在在$(expression)$(expression
7、)的双小括号内,空格可以任意添加的双小括号内,空格可以任意添加的双小括号内,空格可以任意添加的双小括号内,空格可以任意添加变量变量i前面没有前面没有$符号?符号?6 66 61010Shell的算术扩展的算术扩展q例子:$echoecho$(a+1)$(a+1)$i=2;i=2;echoecho$(i=2)$(i=2)利用算术扩展给变量赋值:利用算术扩展给变量赋值:$resultresult=$(i=0&i=0&i=3)1 1a是未定义的变量是未定义的变量表达式内的变量若未定义,则当作其值为表达式内的变量若未定义,则当作其值为0 01 1算术扩展可以用来判断真假算术扩展可以用来判断真假1111
8、exprexpr命令命令命令命令pexprexprexprexpr 用于进行整数运算用于进行整数运算p格式:exprexprexprexpr 表达式表达式表达式表达式 表达式由操作数和运算符组成。操作数一般是表达式由操作数和运算符组成。操作数一般是整数整数,也可,也可以是以是字符串字符串。表达式的各部分表达式的各部分(操作数和运算符之间操作数和运算符之间)必须以空格分隔。必须以空格分隔。表达式中某些对表达式中某些对shellshell有特殊意义的字符必须转义。有特殊意义的字符必须转义。p运算符可为:运算符可为:+加法加法-减法减法 *乘法乘法/整除整除%求模求模(余数余数)=1212expr命
9、令命令$exprexprexprexpr 6+3 6+3 6+3 6+3$var1=6var1=6var1=6var1=6$var2=3var2=3var2=3var2=3$exprexprexprexpr var1 /var2 var1 /var2 var1 /var2 var1 /var2$exprexprexprexpr$var1 /var1 /var1 /var1 /$var2var2var2var2$exprexprexprexpr$var1 *var1 *var1 *var1 *$var2var2var2var2$exprexprexprexpr$var1 var1 var1 va
10、r1 *$var2var2var2var292expr:syntax error当当Shell看到看到*符号时,会把它看作通配符,并用当前目录下的文符号时,会把它看作通配符,并用当前目录下的文件名列表进行替换件名列表进行替换18expr:non-numeric argument1313expr命令命令多个算术表达式可以组合在一起多个算术表达式可以组合在一起多个算术表达式可以组合在一起多个算术表达式可以组合在一起$exprexprexprexpr 5 5 5 5+7 7 7 7/3 3 3 3 还可以使用反引号改变计算次序:还可以使用反引号改变计算次序:$exprexprexprexprexpr
11、exprexprexpr5+7/3 5+7/3 5+7/3 5+7/3 exprexprexprexpr命令一般用于整数值,此外,还可用于字符串测试。命令一般用于整数值,此外,还可用于字符串测试。$s s s s1=“hello”1=“hello”1=“hello”1=“hello”$exprexprexprexpr$s1=“hello”$s1=“hello”$s1=“hello”$s1=“hello”741显示真假值显示真假值1414test 命令命令p用于测试一种或几种条件用于测试一种或几种条件p格式:test expression test expression test express
12、ion test expression expression expression expression expression 使用方括号时,要注意使用方括号时,要注意在条件两边加上空格在条件两边加上空格。涉及。涉及到变量值(到变量值($variable$variable)的比较时的比较时最好把变量取值用双最好把变量取值用双引号括起来引号括起来,以免,以免ShellShell误解变量值。误解变量值。p测试结果反映在退出状态中测试结果反映在退出状态中,而不是直接显示输出:而不是直接显示输出:条件为真条件为真 =退出状态退出状态为为0 0条件为假条件为假 =退出状态非退出状态非0 01515tes
13、t 命令命令p可测试的条件分为可测试的条件分为4 4类类:测试两个字符串之间的关系测试两个字符串之间的关系 测试两个整数之间关系测试两个整数之间关系 测试文件是否存在或是否具有某种状态或属性。测试文件是否存在或是否具有某种状态或属性。测试多个条件的与测试多个条件的与(and)(and)或或(or)(or)组合。组合。p分别对应分别对应4 4种不同的操作符:种不同的操作符:字符串操作符字符串操作符 整数操作符整数操作符 文件操作符文件操作符 逻辑操作符逻辑操作符1616test 命令的操作符命令的操作符p字符串操作符字符串操作符 s string1=string2tring1=string2字符
14、串相等字符串相等 s string1!=string2tring1!=string2字符串不等字符串不等 stringstring 字符串非空字符串非空p等号和不等号操作符两边必须有空格等号和不等号操作符两边必须有空格p涉及到变量值比较时涉及到变量值比较时最好把变量值(最好把变量值($variable$variable)用双引号括起来用双引号括起来p 如何判断字符串是否相等?如何判断字符串是否相等?长度长度 内容内容1717test 命令的操作符命令的操作符p例子:例子:$str1$str1=abcdabcd$strstr2 2=abcdabcd$test$test$str1$str1$str1$str1$echoecho$?$test$test$str1$str1=$str2$str2$s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1