| 关键词: 命令 条件 变量 循环 测试 文件 Shell 一个 如果 文件名 |
Shell简介 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 shell脚本编程语言:是一种面向过程的动态编程语言。 脚本:实际是命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序 变量名称 1、只能包含字母、数字和下划线,并且不能以数字开头 2、不应该跟系统中已有的环境变量同名 3、最好做见名知义 变量类型 本地变量 VARNAME=VALUE:作用域为整个bash进程 local VARNAME=VALUE:作用域为当前代码段 环境变量 作用域为当前shell以及子shell export VARNAME=VALUE "导出变量",此时VARNAME变为环境变量 常用的shell环境变量有: HOME 用于保存注册目录的完全路径名。 PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令 名称一致的可执行文件将被执行。 TERM 终端的类型。 UID 当前用户的识别字,取值是由数位构成的字串。 PWD 当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。 位置变量 $1 $2 $3 $4 ... 特殊变量 $# 位置参数的数量。 $* 所有位置参数的内容。 $? 命令执行后返回的状态。 $$ 当前进程的进程号。 $! 后台运行的最后一个进程号。 $0 当前执行的进程名。 其中,$?用于检查上一个命令执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。) bash中实现条件测试 条件测试类型: 整数测试 字符测试 文件测试 条件测试的表达式: [ expression ] [[ expression ]] test expression 数值测试: -eq:测试两个整数是否相等; -ne:测试两个整数是否不相等;不等,为真;相等,为假 -gt:测试一个数是否大于另一个数;大于,为真;否则,为假 -lt:测试一个数是否小于另一个数;小于,为真;否则,为假 -ge:测试一个数大于或等于另一个数,为真 -le:测试一个数小于或等于另一个数,为真 字符测试: = 等于则为真。 != 不相等则为真。 -z字串 字串长度伪则为真。 -n字串 字串长度不伪则为真。 文件测试: -e文件名 如果文件存在则为真。 -r文件名 如果文件存在且可读则为真。 -w文件名 如果文件存在且可写则为真。 -x文件名 如果文件存在且可执行则为真。 -s文件名 如果文件存在且至少有一个字符则为真。 -d文件名 如果文件存在且为目录则为真。 -f文件名 如果文件存在且为普通文件则为真。 -c文件名 如果文件存在且为字符型特殊文件则为真。 -b文件名 如果文件存在且为块特殊文件则为真。 另外,Linux还提供了与(!)、或(-o)、非(-a)三个逻辑操作符,用于将测试条件连接起来,其优先顺序为:!最高,-a次之,-o最低 命令间的逻辑关系: 逻辑与: && 第一个条件为假时,第二条件不用再判断,最终结果为假 第一个条件为真时,第二条件必须行判断,,最终结果取决于第二条件的真假 逻辑或: || 第一个条件为假时,第二条件必须进行判断,最终结果取决于第二条件 第一个条件为真时,第二条件不必再进行判断,最终结果为真 流程控制结构 if 条件语句 if 判断条件;then statement1 statement2 ... fi 双分支的if语句 if 判断条件;then statement1 statement2 else statement3 statement4 fi 多分支的if语句: if 判断条件;then statement ... elif 判断条件;then statement ... elif 判断条件;then statement ... fi if COMMAND &> /dev/null;then statement else statement fi 这里利用COMMAND执行状态的返回值来作为判断条件,COMMAND返回状态值为0,则为真 for循环 for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为: for 变量名 [in 数值列表] do statement1 statement2 statement3 ... done 变量名可以是用户选择的任何字串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表。 while和until循环 while和until命令都是用命令的返回状态值来控制循环的。While循环的一般格式为: while statement1 do statement2 done 只要while的“statement1”中最后一个命令的返回状态为真,while循环就继续执行do...done之间的“statement2”。 until命令是另一种循环结构,它和while命令相似,其格式如下: until statement1 do statement2 done until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。 Shell还提供了true和false两条命令用于创建无限循环结构,它们的返回状态分别是总为0或总为非0。 case条件选择 if条件语句用于在两个选项中选定一项,而case条件选择为用户提供了根据字串或变量的值从多个选项中选择一项的方法,其格式如下: case string in expression1) statement1 ;; expression2) statement2 ;; …… *) other statement3 esac Shell通过计算字串string的值,将其结果依次和运算式expression1, expression2等进行比较,直到找到一个匹配的运算式为止。如果找到了匹配项,则执行它下面的命令直到遇到一对分号(;;)为止。 在case运算式中也可以使用Shell的通配符(“*”、“?”、“[ ]”)。通常用 * 作为case命令的最后运算式以便在前面找不到任何相应的匹配项时执行“other statement3”的命令。 shell 中如何进行算术运算 let 算术运算表达式 let C=$A+$B $[算术运算表达式] C=$[$A+$B] expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用 C=`expr $A + $B` shell中的函数 第一种方法: function function_name { statement1 statement2 ... } 第二种方法:C语言风格的定义 function_name() { statement1 statement2 ... } 要调用已经定义好的函数,直接使用函数名称"function_name [param1 param2 ...]"即可 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|