




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux实用教程第第7章章 Shell编程编程熟悉熟悉ShellShell程序的创建程序的创建7.1ShellShell变量变量7.2变量表达式变量表达式7.3ShellShell程序的执行和跟踪程序的执行和跟踪7.4ShellShell流程控制语句流程控制语句7.5 通常情况下,从命令行每输入一次命令就通常情况下,从命令行每输入一次命令就能够得到系统响应,如果需要一个接着一个地能够得到系统响应,如果需要一个接着一个地输入命令才得到结果的时候,这样的做法效率输入命令才得到结果的时候,这样的做法效率很低。使用很低。使用ShellShell程序或者程序或者ShellShell脚本可以很脚本可以很
2、好地解决这个问题。好地解决这个问题。 作为命令语言互动式地解释和执行用户输作为命令语言互动式地解释和执行用户输入的命令是入的命令是ShellShell的功能之一,的功能之一,ShellShell还可以还可以用来进行程序设计,它提供了定义变量和参数用来进行程序设计,它提供了定义变量和参数的手段以及丰富的过程控制结构。使用的手段以及丰富的过程控制结构。使用ShellShell编程类似于使用编程类似于使用DOSDOS中的批处理文件,称为中的批处理文件,称为ShellShell脚本,又叫做脚本,又叫做ShellShell程序或程序或ShellShell命令文命令文件。件。 7.1.1语法基本介绍语法基
3、本介绍 Shell Shell程序基本语法较为简单,主要由开程序基本语法较为简单,主要由开头部分、注释部分以及语句执行部分组成。头部分、注释部分以及语句执行部分组成。 Shell Shell程序必须以下面的行开始(必须放程序必须以下面的行开始(必须放在文件的第一行)。在文件的第一行)。 #!/bin/bash#!/bin/bash 符号符号“#!”#!”用来告诉系统它后面的参数用来告诉系统它后面的参数是用来执行该文件的程序,在这个例子中使用是用来执行该文件的程序,在这个例子中使用/bin/bash/bin/bash来执行程序。当编辑好脚本时,如来执行程序。当编辑好脚本时,如果要执行该脚本,还必
4、须使其可执行。果要执行该脚本,还必须使其可执行。1 1开头开头 要使脚本可执行,需赋予该文件可执行的要使脚本可执行,需赋予该文件可执行的权限,使用如下命令文件才能运行。权限,使用如下命令文件才能运行。 chmod u+xchmod u+x 文件名文件名 在进行在进行ShellShell编程时,以编程时,以“#”#”开头的句开头的句子表示注释,直到这一行的结束,建议在程序子表示注释,直到这一行的结束,建议在程序中使用注释。如果使用注释,那么即使相当长中使用注释。如果使用注释,那么即使相当长的时间内没有使用该脚本,也能在很短的时间的时间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作原理
5、。内明白该脚本的作用及工作原理。2 2注释注释7.1.2一个简单一个简单Shell程序的创建过程程序的创建过程 Shell Shell程序就是放在一个文件中的一系列程序就是放在一个文件中的一系列LinuxLinux命令和实用程序,在执行的时候,通过命令和实用程序,在执行的时候,通过LinuxLinux系统一个接着一个地解释和执行每个命系统一个接着一个地解释和执行每个命令,这和令,这和WindowsWindows系统下的批处理程序非常相系统下的批处理程序非常相似。似。1 1创建文件创建文件2 2设置可执行权限设置可执行权限3 3执行执行ShellShell程序程序4 4使用使用bashbash命
6、令执行程序命令执行程序7.1.3显示欢迎界面的显示欢迎界面的Shell程序程序通过上一节的实例可以掌握整个通过上一节的实例可以掌握整个ShellShell程序编程序编写和执行的方法,接下来再来学习一个实例。写和执行的方法,接下来再来学习一个实例。 像高级程序设计语言一样,像高级程序设计语言一样,ShellShell也提供也提供说明和使用变量的功能。对说明和使用变量的功能。对ShellShell来讲,所有来讲,所有变量的取值都是一个字符,变量的取值都是一个字符,ShellShell程序采用程序采用“$var$var”的形式来引用名为的形式来引用名为varvar的变量的值。的变量的值。 7.2.1
7、Shell定义的环境变量定义的环境变量 Shell Shell在开始执行时就已经定义了一些与在开始执行时就已经定义了一些与系统的工作环境有关的变量,用户还可以重新系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的定义这些变量,常用的ShellShell环境变量如下。环境变量如下。 HOME HOME PATH PATH TERM TERM UID UID PWD PWD PS1 PS1 PS2 PS2 【例【例7.17.1】 查看当前用户查看当前用户ShellShell定义的环定义的环境变量的值。境变量的值。 7.2.2用户定义的变量用户定义的变量 用户可以按照下面的语法规则定义自己
8、的用户可以按照下面的语法规则定义自己的变量:变量: 变量名变量名= =变量值变量值 在定义变量时,变量名前不应加符号在定义变量时,变量名前不应加符号“$”$”;在引用变量的内容时,则应在变量名;在引用变量的内容时,则应在变量名前加符号前加符号“$”$”。 在给变量赋值时,等号两边一定不能留空在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。在编写串都要用双引号括起来。在编写ShellShell程序时,程序时,为了使变量名和命令名相区别,建议所有的变为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表
9、示。量名都用大写字母来表示。 【例【例7.27.2】 用户定义变量的使用。用户定义变量的使用。 有时需要在说明一个变量并对它设置为一有时需要在说明一个变量并对它设置为一个特定值后就不再改变它的值时,可以用下面个特定值后就不再改变它的值时,可以用下面的命令来保证一个变量的只读性。的命令来保证一个变量的只读性。 readonlyreadonly 变量名变量名 在任何时候创建的变量都只是当前在任何时候创建的变量都只是当前ShellShell的局部变量,所以不能被的局部变量,所以不能被ShellShell运行的其他命运行的其他命令或令或ShellShell程序所利用,而程序所利用,而exportexp
10、ort命令可以将命令可以将一个局部变量提供给一个局部变量提供给ShellShell命令使用,其格式命令使用,其格式是:是: export export 变量名变量名 也可以在给变量赋值的同时使用也可以在给变量赋值的同时使用exportexport命令:命令: export export 变量名变量名= =变量值变量值 使用使用exportexport说明的变量在说明的变量在ShellShell以后运行以后运行的所有命令或程序中都可以访问到。的所有命令或程序中都可以访问到。7.2.3位置参数位置参数 位置参数是一种在调用位置参数是一种在调用ShellShell程序的命令程序的命令行中按照各自的位
11、置决定的变量,是在程序名行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,之后输入的参数。位置参数之间用空格分隔,ShellShell取第一个位置参数替换程序文件中的取第一个位置参数替换程序文件中的$1$1,第二个替换第二个替换$2$2,依次类推。,依次类推。$0$0是一个特殊的变是一个特殊的变量,它的内容是当前这个量,它的内容是当前这个ShellShell程序的文件名,程序的文件名,所以,所以,$0$0不是一个位置参数,在显示当前所有不是一个位置参数,在显示当前所有的位置参数时是不包括的位置参数时是不包括$0$0的。的。7.2.4预定义变量预定义变量 预定义变量
12、和环境变量相类似,也是在预定义变量和环境变量相类似,也是在ShellShell一开始时就定义了的变量。所不同的是,一开始时就定义了的变量。所不同的是,用户只能根据用户只能根据ShellShell的定义来使用这些变量,的定义来使用这些变量,所有预定义变量都是由符号所有预定义变量都是由符号“$”$”和另一个符和另一个符号组成的。号组成的。 常用的常用的ShellShell预定义变量如下。预定义变量如下。 $#$#:位置参数的数量。:位置参数的数量。 $ $* *:所有位置参数的内容。:所有位置参数的内容。 $?$?:命令执行后返回的状态。:命令执行后返回的状态。 $:当前进程的进程号。:当前进程的
13、进程号。 $!$!:后台运行的最后一个进程号。:后台运行的最后一个进程号。 $0$0:当前执行的进程名。:当前执行的进程名。7.2.5参数置换的变量参数置换的变量 Shell Shell提供了参数置换功能以便用户可以提供了参数置换功能以便用户可以根据不同的条件来给变量赋不同的值。参数置根据不同的条件来给变量赋不同的值。参数置换的变量有换的变量有4 4种,这些变量通常与某一个位置种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设参数相联系,根据指定的位置参数是否已经设置决定变量的取值,它们的语法和功能分别如置决定变量的取值,它们的语法和功能分别如下。下。1 1变量变量=$=$参
14、数参数-word-word2 2变量变量=$=$参数参数=word=word3 3变量变量=$=$参数?参数?wordword4 4变量变量=$=$参数参数+word+word test test是是ShellShell程序中的一个表达式,通过程序中的一个表达式,通过和和ShellShell提供的提供的ifif等条件语句相结合可以方便等条件语句相结合可以方便地测试字符串、文件状态和数字。其语法如下:地测试字符串、文件状态和数字。其语法如下: test test 表达式表达式 表达式所代表的操作符有字符串操作符、表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。数字操作符
15、、逻辑操作符以及文件操作符。 7.3.1字符串比较字符串比较 作用:测试字符串是否相等,长度是否为作用:测试字符串是否相等,长度是否为零,字符串是否为零,字符串是否为NULLNULL。 常用的字符串比较符号如下。常用的字符串比较符号如下。 = =:比较两个字符串是否相同,相同则为:比较两个字符串是否相同,相同则为“是是”。 !=!=:比较两个字符串是否相同,不同则:比较两个字符串是否相同,不同则为为“是是”。 -n-n:比较字符串的长度是否大于:比较字符串的长度是否大于0 0,如果,如果大于大于0 0则为则为“是是”。 -z-z:比较字符串的长度是否等于:比较字符串的长度是否等于0 0,如果,
16、如果等于等于0 0则为则为“是是”。【例【例7.37.3】 字符串比较的使用。字符串比较的使用。【例【例7.47.4】 含有空格的字符串的比较。含有空格的字符串的比较。7.3.2数字比较数字比较 test test语句不使用语句不使用“?”?”类似的符号来表类似的符号来表达大小的比较,而是用整数来表示,常用的数达大小的比较,而是用整数来表示,常用的数字比较符号如下。字比较符号如下。 -eq-eq:相等。:相等。 -ge-ge:大于等于。:大于等于。 -le-le:小于等于。:小于等于。 -ne-ne:不等于。:不等于。 -gt-gt:大于。:大于。 -lt-lt:小于。:小于。【例【例7.57
17、.5】 数字相等比较。数字相等比较。【例【例7.67.6】 数字大于比较。数字大于比较。7.3.3逻辑测试逻辑测试 常用的逻辑测试符号如下。常用的逻辑测试符号如下。 ! !:与一个逻辑值相反的逻辑值。:与一个逻辑值相反的逻辑值。 -a-a与(与(andand):两个逻辑值都为):两个逻辑值都为“是是”返返回值才为回值才为“是是”,反之为,反之为“否否”。 -o-o或(或(oror):两个逻辑值有一个为):两个逻辑值有一个为“是是”,返回值就为,返回值就为“是是”。 【例【例7.77.7】 逻辑测试。逻辑测试。7.3.4文件操作文件操作 文件测试表达式通常是为了测试文件的文文件测试表达式通常是为
18、了测试文件的文件操作逻辑,测试符号如下。件操作逻辑,测试符号如下。 -d-d:对象存在且为目录,则返回值为:对象存在且为目录,则返回值为“是是”。 -f-f:对象存在且为文件,则返回值为:对象存在且为文件,则返回值为“是是”。 -L-L:对象存在且为符号连接,则返回值:对象存在且为符号连接,则返回值为为“是是”。 -r-r:对象存在且可读,则返回值为:对象存在且可读,则返回值为“是是”。 -s -s:对象存在且长度非:对象存在且长度非0 0,则返回值为,则返回值为“是是”。 -w-w:对象存在且可写,则返回值为:对象存在且可写,则返回值为“是是”。 -x-x:对象存在且可执行,则返回值为:对象
19、存在且可执行,则返回值为“是是”。 ! !:测试条件的否定。:测试条件的否定。 【例【例7.87.8】 文件操作测试。文件操作测试。 用户可以用任何编辑程序来编写用户可以用任何编辑程序来编写ShellShell程程序。因为序。因为ShellShell程序是解释执行的,所以不需程序是解释执行的,所以不需要编译成目的程序。要编译成目的程序。7.4.1Shell程序的执行和调试程序的执行和调试 按照按照ShellShell编程的惯例,以编程的惯例,以bashbash为例,程为例,程序的第一行一般为序的第一行一般为“# #!/bin/bash”/bin/bash”,其中,其中“#”#”表示该行是注释,
20、感叹号表示该行是注释,感叹号“!”表示表示ShellShell运行感叹号之后的命令并用文档的其余运行感叹号之后的命令并用文档的其余部分作为输入,也就是运行部分作为输入,也就是运行/bin/bash/bin/bash并让并让/bin/bash/bin/bash去执行去执行ShellShell程序的内容。程序的内容。在在Fedora 8Fedora 8系统下执行系统下执行ShellShell程序有如下程序有如下3 3种种方法。方法。1 1ShellShell程序的执行程序的执行 (1 1)bash Shellbash Shell程序文件名程序文件名 使用这种方法的命令格式为:使用这种方法的命令格式
21、为: bash Shellbash Shell程序文件名程序文件名 (2 2)bash Shellbash Shell程序名程序名 使用这种方法的命令格式为:使用这种方法的命令格式为: bash Shellbash Shell程序名程序名 (3 3)用)用chmodchmod命令使命令使ShellShell程序成为可执程序成为可执行的然后运行行的然后运行 一个文件能否运行取决于该文件的内容本一个文件能否运行取决于该文件的内容本身是否可执行且该文件是否具有执行权。身是否可执行且该文件是否具有执行权。 在在ShelShel程序编写过程中难免会出错,有程序编写过程中难免会出错,有的时候,调试程序比编
22、写程序花费的时间还要的时候,调试程序比编写程序花费的时间还要多,多,ShellShell程序同样如此。程序同样如此。 ShellShell程序的调试主要是利用程序的调试主要是利用bashbash命令解命令解释程序的选择项。调用释程序的选择项。调用bashbash的形式是:的形式是: bash bash 选项选项ShellShell程序文件名程序文件名 2 2ShellShell程序的调试程序的调试7.4.2Shell程序的跟踪程序的跟踪 调试调试ShellShell程序的主要方法是利用程序的主要方法是利用ShellShell命令解释程序的命令解释程序的“-v”-v”或或“-x”-x”选项来跟踪
23、程选项来跟踪程序的执行。序的执行。 除了使用除了使用ShellShell的的“-v”-v”和和“-x”-x”选择项选择项以外,还可以在以外,还可以在ShellShell程序内部采取一些辅助程序内部采取一些辅助调试的措施。调试的措施。 和其他高级程序设计语言一样,和其他高级程序设计语言一样,ShellShell提提供了用来控制程序和执行流程的命令,包括条供了用来控制程序和执行流程的命令,包括条件分支和循环结构,用户可以用这些命令创建件分支和循环结构,用户可以用这些命令创建非常复杂的程序。非常复杂的程序。 与传统语言不同的是,与传统语言不同的是,ShellShell用于指定条用于指定条件值的不是布
24、尔运算式,而是命令和字符串。件值的不是布尔运算式,而是命令和字符串。 7.5.1条件判断条件判断 在在ShellShell程序中使用条件判断语句可以使程序中使用条件判断语句可以使用用ifif条件语句和条件语句和casecase条件语句,两者的区别条件语句,两者的区别在于使用在于使用casecase语句的选项比较多而已。语句的选项比较多而已。 Shell Shell程序中的条件分支是通过程序中的条件分支是通过ifif条件语条件语句来实现的,其一般格式有句来实现的,其一般格式有if-thenif-then语句和语句和if-then-elseif-then-else语句两种。语句两种。1 1if i
25、f条件语句条件语句(1 1)if-then if-then 语句语句 if-thenif-then语句的语法如下:语句的语法如下: ifif命令行命令行1 1 then then 命令行命令行2 2 fi fi 【例【例7.97.9】 使用使用if-then if-then 语句创建简单语句创建简单的的ShellShell程序。程序。(2 2)if-then-elseif-then-else语句语句 if-then-elseif-then-else语句的语法如下:语句的语法如下: ifif 命令行命令行1 1 then then 命令行命令行2 2 else else 命令行命令行3 3 fi
26、 fi 【例【例7.107.10】 使用使用if-then-elseif-then-else语句创建语句创建一个根据输入的分数判断分数是否及格的一个根据输入的分数判断分数是否及格的ShellShell程序。程序。 使用使用vivi编辑器创建编辑器创建ShellShell程序,文件名为程序,文件名为akak,文件内容如下所示。,文件内容如下所示。 if if条件语句用于在两个选项中选定一项,条件语句用于在两个选项中选定一项,而而casecase条件选择为用户提供了根据字符串或变条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,其语法量的值从多个选项中选择一项的方法,其语法格式如
27、下所示:格式如下所示:2 2casecase条件语句条件语句case string incase string inexp-1)exp-1)若干个命令行若干个命令行1 1;exp-2)exp-2)若干个命令行若干个命令行2 2;* *) )其他命令行其他命令行esacesac Shell Shell通过计算字符串通过计算字符串stringstring的值,将其的值,将其结果依次与运算式结果依次与运算式exp-1exp-1和和exp-2exp-2等进行比较,等进行比较,直到找到一个匹配的运算式为止。如果找到了直到找到一个匹配的运算式为止。如果找到了匹配项,则执行它下面的命令直到遇到一对分匹配项,
28、则执行它下面的命令直到遇到一对分号(;)为止。号(;)为止。 在在casecase运算式中也可以使用运算式中也可以使用ShellShell的通配的通配符(符(“* *”,“?”,“ ” ”)。通常用)。通常用“* *”作为作为casecase命令的最后运算式以便在前面找不到命令的最后运算式以便在前面找不到任何相应的匹配项时执行任何相应的匹配项时执行“其他命令行其他命令行”的命的命令。令。 【例【例7.117.11】 使用使用casecase语句创建一个菜单语句创建一个菜单选择的选择的ShellShell脚本。脚本。7.5.2循环控制循环控制 在在ShellShell程序中使用循环控制语句可以使
29、程序中使用循环控制语句可以使用用forfor语句、语句、whilewhile语句以及语句以及untiluntil语句。下面语句。下面分别对其进行介绍。分别对其进行介绍。 for for循环语句对一个变量的可能的值都执循环语句对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以行一个命令序列。赋给变量的几个数值既可以在程序中以数值列表的形式提供,也可以在程在程序中以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。序以外以位置参数的形式提供。forfor循环的一循环的一般语法格式为:般语法格式为:1 1forfor循环语句循环语句for for 变量名变量名 inin数值列表
30、数值列表 dodo若干个命令行若干个命令行donedone 变量名可以是用户选择的任何字符串,如变量名可以是用户选择的任何字符串,如果变量名是果变量名是varvar,则在,则在inin之后给出的数值将顺之后给出的数值将顺序替换循环命令列表中的序替换循环命令列表中的“$var$var”。如果省略。如果省略了了inin,则变量,则变量varvar的取值将是位置参数。对变的取值将是位置参数。对变量的每一个可能的赋值都将执行量的每一个可能的赋值都将执行dodo和和donedone之之间的命令列表。间的命令列表。 【例【例7.127.12】 使用使用forfor语句创建简单的语句创建简单的ShellSh
31、ell程序。程序。 【例【例7.137.13】 使用使用forfor语句创建求命令行语句创建求命令行上所有整数之和的上所有整数之和的ShellShell程序。程序。 while while语句是用命令的返回状态值来控语句是用命令的返回状态值来控制循环的。制循环的。whilewhile循环的一般语法格式为:循环的一般语法格式为: whilewhile 若干个命令行若干个命令行1 1 do do 若干个命令行若干个命令行2 2 done done2 2whilewhile循环语句循环语句 只要只要whilewhile的的“若干个命令行若干个命令行1”1”中最后中最后一个命令的返回状态为真,一个命令
32、的返回状态为真,whilewhile循环就继续循环就继续执行执行“do.done”do.done”之间的之间的“若干个命令行若干个命令行2”2”。 【例【例7.147.14】 使用使用whilewhile语句创建一个计语句创建一个计算算1 1到到5 5的平方的的平方的ShellShell程序。程序。 【例【例7.157.15】 使用使用whilewhile语句创建一个根语句创建一个根据输入的数值求累加和(据输入的数值求累加和(1+2+3+4+1+2+3+4+n+n)的)的ShellShell程序。程序。 until until语句是另一种循环结构,它和语句是另一种循环结构,它和whilewhi
33、le语句相似,其语句格式如下:语句相似,其语句格式如下: untiluntil 若干个命令行若干个命令行1 1 do do 若干个命令行若干个命令行2 2 done done3 3untiluntil循环语句循环语句 until until循环和循环和whilewhile循环的区别在于:循环的区别在于:whilewhile循环在条件为真时继续执行循环,而循环在条件为真时继续执行循环,而untiluntil则是在条件为假时继续执行循环。则是在条件为假时继续执行循环。 ShellShell还提供了还提供了truetrue和和falsefalse两条命令用两条命令用于创建无限循环结构,它们的返回状态
34、分别是于创建无限循环结构,它们的返回状态分别是总为总为0 0或总为非或总为非0 0。 【例【例7.167.16】 使用使用untiluntil语句创建一个计语句创建一个计算算1 15 5的平方的的平方的ShellShell程序。程序。 【例【例7.177.17】 使用使用untiluntil语句创建一个输语句创建一个输入入exitexit退出的退出的ShellShell程序。程序。 作为命令语言互动式地解释和执行用户输作为命令语言互动式地解释和执行用户输入的命令是入的命令是ShellShell的功能之一,的功能之一,ShellShell还可以还可以用来进行程序设计,它提供了定义变量和参数用来进
35、行程序设计,它提供了定义变量和参数的手段以及丰富的过程控制结构。的手段以及丰富的过程控制结构。ShellShell程序程序基本语法较为简单,主要有开头部分、注释部基本语法较为简单,主要有开头部分、注释部分以及语句执行部分组成。分以及语句执行部分组成。ShellShell程序就是放程序就是放在一个文件中的一系列在一个文件中的一系列LinuxLinux命令和实用程序,命令和实用程序,在执行的时候,通过在执行的时候,通过LinuxLinux系统一个接着一个系统一个接着一个地解释和执行每个命令,这和地解释和执行每个命令,这和WindowsWindows系统下系统下的批处理程序非常相似。的批处理程序非常相似。 像高级程序设计语言一样,像高级程序设计语言一样,ShellShell也提供也提供说明和使用变量的功能。对说明和使用变量的功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗健康管理在商业领域的应用与挑战
- 教案检查工作总结模版
- 上海 房东租房合同范例
- 红褐色扁平风网络安全模板
- 储罐厂家供货合同范例
- 产品定制打样合同范例
- 供销付款合同范例
- 防溺水安全家长会发言稿模版
- 住建部买房合同范例
- 职业性硬皮病的临床护理
- 广东省广州三校2023-2024学年高二下学期期末考试+物理试卷(含答案)
- 驾驶员安全驾驶培训课件
- 部编版语文四年级下册第四单元大单元作业设计
- 金融大数据银行项目使用手册
- 建筑公司挂靠协议书范文
- 人工智能训练师(中级数据标注员)理论考试题库(含答案)
- 中考数学解题技巧专题巧用旋转进行计算全国公开课一等奖百校联赛微课赛课特等奖课件
- MOOC 人工智能原理-北京大学 中国大学慕课答案
- 《杠杆 第1课时》示范公开课教学设计【初中物理苏科版九年级上册】
- 泛血管疾病抗栓治疗中国专家共识2024版解读课件
- 经典导读与欣赏智慧树知到期末考试答案2024年
评论
0/150
提交评论