Shell零基础学习
- 格式:docx
- 大小:42.33 KB
- 文档页数:20
shell函数参数传递详解摘要:一、shell编程基础二、函数定义与调用三、参数传递方式四、实战案例解析正文:一、shell编程基础Shell是一种命令行解释器,主要用于执行脚本程序。
它基于Unix操作系统,可以理解为一种简化的、面向任务的编程语言。
在shell编程中,我们可以使用脚本文件来实现各种功能,如文件操作、系统管理等。
本文将重点介绍shell函数参数传递的相关知识,帮助大家更好地掌握shell编程。
二、函数定义与调用在shell脚本中,函数是一种组织代码的方式,它可以将一系列相关操作组合在一起,提高代码的可读性和可维护性。
函数的定义和使用类似于其他编程语言,如Python、Java等。
函数定义:使用`function`关键字,followed by 函数名、括号和括号内的参数列表。
例如:```bashfunction my_function() {echo "Hello, $1!"}```函数调用:使用函数名,可以带参数,也可以不带参数。
例如:```bashmy_function "World"```三、参数传递方式在shell脚本中,函数参数的传递主要有以下几种方式:1.位置参数:根据参数在函数定义中的位置来传递。
如:```bashfunction my_function() {echo "Hello, $1!"echo "Hello, $2!"}my_function "World" "Linux"```2.命名参数:通过为参数指定名称来传递。
如:```bashfunction my_function() {echo "Hello, $1!"echo "Hello, $2!"}my_function "World" "Linux" "Unix"```3.关联参数:通过关联数组传递。
centos7 shell编程CentOS 7 Shell编程:从入门到精通概述:在计算机领域中,Shell是指一种特殊的用户界面,它用来与操作系统进行交互和控制。
Shell编程即是通过编写Shell脚本来实现一系列自动化操作和任务。
本文将以CentOS 7下的Shell编程为主题,为读者提供一步一步的指导,从入门到精通。
第一步:Shell脚本的入门1. 了解Shell:Shell是一种解释器,它在操作系统和用户之间提供了一种交互的方式。
在CentOS 7中,默认使用的是Bash(Bourne Again SHell)。
2. 创建Shell脚本:使用任意文本编辑器(如vi或nano),创建一个新的文件并以.sh为扩展名保存。
例如,新建一个名为"my_script.sh"的文件。
3. 添加Shebang:在脚本的第一行,添加Shebang声明(#!/bin/bash),告诉操作系统要使用Bash来解释执行此脚本。
4. 编写Shell脚本:在文件中编写Shell命令,每个命令占一行。
例如,您可以使用echo命令来输出一些文本消息。
第二步:Shell脚本的基本语法1. 变量的定义和使用:在Shell脚本中,可以使用变量来存储临时数据。
变量名通常是大写字母,等号两侧不能有空格。
例如,可以定义一个变量为"message"并将其值设置为"Hello, World!"。
2. 命令行参数的传递:Shell脚本可以接收命令行参数,这些参数可以在脚本内部使用。
使用"1"表示第一个参数,"2"表示第二个参数,以此类推。
例如,可以编写一个脚本来计算两个数字的和,并将这些数字作为参数传递给脚本。
3. 条件判断和分支语句:Shell脚本可以根据条件来执行不同的代码块。
使用if-else语句可以进行简单的条件判断,使用case语句可以进行更复杂的条件判断。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。
Shell既是一种命令语言,又是一种程序设计语言。
作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。
因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。
可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。
一、什么是shell当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。
那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。
当用户使用Linux时是通过命令来完成所需工作的。
一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。
shell解释用户输入的命令,就象DOS里的所做的一样,所不同的是,在DOS中,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。
一般的Linux系统都将bash作为默认的shell。
二、几种流行的shell目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:#echo $SHELL$SHELL是一个环境变量,它记录用户所使用的shell类型。
你可以用命令:#shell-name来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。
第12章 Shell 脚本编程●Shell 命令行的运行 ●编写、修改权限和执行Shell 程序的步骤 ●在Shell 程序中使用参数和变量 ●表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序12-1 Shell 命令行书写规则◆ Shell 命令行的书写规则对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如:[root@localhost root]# ls a* -l;free;df长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “this is \>long command ” This is long command注意:“>”符号是自动产生的,而不是输入的。
12-2 编写/修改权限及执行Shell 程序的步骤◆ 编写Shell 程序◆ 执行Shell 程序Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。
Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。
在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。
首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。
12-2-1 编辑Shell程序编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。
[root@localhost bin]#vi date#! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”注意:#! /bin/sh通知采用Bash解释。
shell编程基础知识点
一、Shell 编程基础知识
1、什么是 Shell
Shell 是一种用户使用的解释型程序,它是操作系统的一部分,派生自多种不同的系统。
它是一种命令解释器,它可以读取用户的输入,解释该输入,并执行相应的命令。
Linux 的 Shell 有很多种,如 bash,csh,ksh 等。
2、Shell 的特性
(1) 交互式:用户可以通过 Shell 的界面实现与计算机的交互,以便用户和计算机之间的信息交换。
(2) 自动化:Shell 可以将用户编写的一系列命令,保存为脚本,并在需要的时候自动执行,以减少用户的工作量。
(3) 扩展性:Shell 可以实现过滤和管道功能,可以与其他应用程序和编程语言结合使用,实现不同应用程序、不同编程语言之间的信息传递。
3、Shell 命令
(1)ls : 列出目录内容。
(2)cd : 改变目录。
(3)pwd : 显示当前所在目录。
(4)mkdir : 创建目录。
(5)rm : 删除文件或目录。
(6)cat : 显示文件内容。
(7)echo : 向屏幕输出指定字符串。
(8)exit : 退出当前 shell 环境。
(9)man : 查看指定命令的帮助文档。
(10)chmod : 改变文件权限。
shell编程总结
Shell编程是一种基于命令行的脚本编程语言,常用于Linux和Unix系统中。
本文将对Shell编程进行总结,包括以下内容:
1. Shell的基础知识:介绍Shell的定义、历史、发展以及Shell 与Linux的关系。
2. Shell脚本的格式:讲解Shell脚本的格式,包括文件头、变量、注释、命令等。
3. Shell命令:介绍常用的Shell命令,如ls、cd、cp、mv、rm、mkdir、cat等。
4. Shell的流程控制:讲解Shell脚本的流程控制语句,包括if语句、for循环、while循环、case语句等。
5. Shell函数:介绍Shell函数的定义、调用和传参等。
6. Shell的文本处理:讲解Shell脚本中的文本处理命令,如grep、sed、awk等。
7. Shell的正则表达式:介绍正则表达式的定义、语法和常用操作符等。
8. Shell的调试和错误处理:讲解Shell脚本的调试方法和错误处理语句,如set -x、set -e等。
9. Shell脚本的实战:通过实际案例介绍如何使用Shell脚本进行系统管理、日志分析、数据处理等。
通过本文的总结,读者可全面了解Shell编程的基础知识和常用技巧,提高Shell编程的能力。
shell的基础语法Shell是一种命令行解释器,它允许用户与操作系统进行交互并执行各种操作。
Shell的基础语法包括以下几个方面:1. 命令执行,在Shell中,用户可以直接输入命令来执行各种操作,例如`ls`命令用于列出当前目录下的文件和文件夹,`mkdir`命令用于创建新的目录等。
2. 变量,在Shell中,可以使用变量来存储数据并在需要的时候进行引用。
变量的赋值和引用使用类似于`variable_name=value`和`$variable_name`的语法。
3. 控制结构,Shell支持基本的控制结构,如条件判断和循环。
条件判断使用`if-then-else-fi`语法,而循环则可以使用`for`、`while`等关键字来实现。
4. 函数,Shell中可以定义和调用函数,使用`function_name() { ... }`的语法来定义函数,使用`function_name`来调用函数。
5. 管道和重定向,Shell支持管道和重定向操作,允许用户将一个命令的输出作为另一个命令的输入,或者将命令的输入/输出重定向到文件或其他设备。
6. 通配符,Shell支持通配符来匹配文件名,例如``用于匹配任意字符,`?`用于匹配单个字符等。
7. 注释,在Shell脚本中,可以使用`#`符号来添加注释,注释部分将被解释器忽略。
总的来说,Shell的基础语法包括了命令执行、变量、控制结构、函数、管道和重定向、通配符以及注释等内容。
掌握这些基础语法对于编写Shell脚本和在命令行下进行操作都是非常重要的。
希望这些信息能够帮助你更好地理解Shell的基础语法。
shell基础课程标准Shell(即命令行解释器)是一种计算机操作系统提供的一种用户界面,用户可以在该界面下通过输入一系列的指令来进行各种操作。
Shell基础课程标准为初学者提供了学习Shell编程的基础知识和技能。
Shell基础课程标准主要包括以下几个方面:1. Shell简介:介绍Shell的定义、功能和应用领域,以及Shell脚本的特点和优势。
学生可以了解Shell的基本概念和用法。
2. Shell命令的使用:介绍常用的Shell命令,如文件和目录管理命令、文件内容查看和编辑命令、进程管理命令等。
学生可以学会使用这些命令来进行常见任务的操作。
3. Shell脚本编写:介绍Shell脚本的基本语法和结构,包括变量、条件判断、循环和函数等。
学生可以学会编写简单的Shell脚本来实现一些自动化任务。
4.命令行操作技巧:介绍一些在命令行下的常用操作技巧,如历史命令的查看和使用、通配符和正则表达式的运用、管道和重定向等。
学生可以学会使用这些技巧来提高工作效率。
5. Shell脚本调试和错误处理:介绍如何调试Shell脚本、查找和修复错误。
学生可以学会使用调试工具和技术来提高脚本的质量和稳定性。
6. Shell脚本的高级特性:介绍一些高级的Shell脚本特性和技巧,如命令行参数的处理、输入输出重定向、进程管理和信号处理等。
学生可以学会使用这些特性来解决更复杂的问题。
通过学习Shell基础课程标准,学生可以获得以下几方面的收益:1.提高工作效率:学生可以学会使用命令行来进行各种操作,提高工作效率和操作的灵活性。
2.自动化任务:学生可以学会编写简单的Shell脚本来完成一些重复性的任务,如文件备份、批量处理等。
3.解决问题能力:学生可以学会使用Shell脚本来解决实际问题,如日志分析、系统监控等。
4.加深对计算机系统的理解:通过学习Shell脚本编程,学生可以更深入地理解计算机系统的原理和工作机制。
总之,Shell基础课程标准为初学者提供了学习Shell编程的基础知识和技能,使学生能够在命令行下进行各种操作,并能编写简单的Shell脚本来解决实际问题。
PowerShell⼊门基础教程Windows PowerShell 是专为系统管理员设计的新 Windows 命令⾏外壳程序。
该外壳程序包括交互式提⽰和脚本环境,两者既可以独⽴使⽤也可以组合使⽤。
1、什么是交互式提⽰?答:交互式提⽰就像打开⼀个cmd窗⼝,在⾥⾯执⾏⼀个ping命令⼀样,它会动态的输⼊结果。
也可以像执⾏ftp命令⼀样,有⼀个上下⽂环境(Context),可以交互。
2、什么是脚本环境?答:就像写VBScript脚本⼀样,以⽂件形式把PowerShell的程序语句写下来,然后利⽤PowerShell的脚本环境来执⾏整个脚本⽂件。
顺便说⼀句,批处理也可以理解为⼀个脚本环境。
PowerShell脚本⽂件的扩展名为.ps1,语⾔⽀持⽤于循环、条件、流控制和变量赋值的语⾔结构。
Windows PowerShell 是专为系统管理员设计的新 Windows 命令⾏外壳程序。
该外壳程序包括交互式提⽰和脚本环境,两者既可以独⽴使⽤也可以组合使⽤。
解读:1、什么是交互式提⽰?答:交互式提⽰就像打开⼀个cmd窗⼝,在⾥⾯执⾏⼀个ping命令⼀样,它会动态的输⼊结果。
也可以像执⾏ftp命令⼀样,有⼀个上下⽂环境(Context),可以交互。
2、什么是脚本环境?答:就像写VBScript脚本⼀样,以⽂件形式把PowerShell的程序语句写下来,然后利⽤PowerShell的脚本环境来执⾏整个脚本⽂件。
顺便说⼀句,批处理也可以理解为⼀个脚本环境。
PowerShell脚本⽂件的扩展名为.ps1,语⾔⽀持⽤于循环、条件、流控制和变量赋值的语⾔结构。
与接受和返回⽂本的⼤多数外壳程序不同,Windows PowerShell 是在 .NET 公共语⾔运⾏时 (CLR) 和 .NET Framework 的基础上构建的,它接受和返回 .NET 对象。
环境中的这⼀根本更改带来了管理和配置 Windows 的全新⼯具和⽅法。
所有的UNIX® 用户都应该了解如何使用Korn Shell 脚本。
通过编写Shell 脚本,可以让您实现许多任务的自动化,并可以为您节约大量的时间。
初看起来,它似乎令人生畏,但只要遵循正确的指导,您就可以熟练地使用它。
本文将指导您编写自己的Korn Shell 脚本。
什么是Shell?IBM® AIX® 操作系统和其他的类UNIX 操作系统一样,都需要通过某种方式与内核进行通信。
这项任务正是通过使用Shell 来实现的。
您可以使用各种不同的Shell,但本文重点关注于Korn Shell。
Korn Shell 是AIX 所使用的缺省Shell。
当您登录到AIX 中时,将以某个目录的提示符作为开始。
缺省目录通常是您的home 目录。
之所以将其称为home 目录,是因为该目录的结构通常如下所示:当登录时,您将处于命令行或者命令提示符处。
这正是您输入UNIX 命令的地方。
您可以输入与UNIX 内核进行交互的Shell 命令。
这些命令可能简单到只有一行(比如查看日期),也可能为多行,而这取决于您所进行的操作。
清单1提供了一些示例命令。
清单 1. 示例命令有关Shell 命令的最棒的一项功能是,您可以将多个命令组合在一个称为脚本的文件中,它允许您依次运行多个命令。
当您必须一次又一次重复地运行相同的命令时,使用脚本非常合适。
您可以将这些命令放到一个Korn Shell 脚本中,而无需反复地键入这些命令。
编写您的第一个Korn Shell 脚本Korn Shell 脚本中的第一行是Shell 自身。
它被表示为下面的形式:要在AIX 中编写Korn Shell 脚本,您需要使用一种文本编辑器。
vi 是一种使用最广泛、且随处可见的文本编辑器。
开始接触时可能会觉得有点麻烦,但随着使用vi 的次数的增多,您将熟练地掌握它。
关于如何使用vi 文本编辑器,人们撰写了很多相关的书籍。
要开始编写您的第一个Korn Shell 脚本,首先需要打开vi 编辑器,并添加Shell 名称作为第一行。
shell脚本基础(⼜长⼜详细)第⼗⼀章 BASH脚本(⼀)常见的Shell变量的类型包括环境变量、预定义变量、位置变量、⽤户⾃定义变量。
本节将分别学习这四种Shell变量的使⽤。
11. 1、 Shell的环境变量通过set命令可以查看系统中所有Shell变量(包括环境变量和⽤户⾃定义变量),由于内容输出较多,建议使⽤less命令分页查看。
常⽤环境变量:PATH 决定了shell将到哪些⽬录中寻找命令或程序HOME 当前⽤户主⽬录HISTSIZE 历史记录数LOGNAME 当前⽤户的登录名USER 当前⽤户名UID 当前⽤名的UIDHOSTNAME 指主机的名称SHELL 前⽤户Shell类型LANGUGE 语⾔相关的环境变量,多语⾔可以修改此环境变量MAIL 当前⽤户的邮件存放⽬录PS1 基本提⽰符,对于root⽤户是#,对于普通⽤户是$PS2 附属提⽰符,默认是“>”例:以分号分隔,显⽰当前的⽤户的⽤户名、宿主⽬录、登录Shell。
例:查看当前命令的搜索路径,并将/opt/bin⽬录添加到现有搜索路径中去,从⽽可以直接执⾏此⽬录中的命令。
环境变量的配置⽂件⽤户可在当前的Shell环境中直接为环境变量赋值,但需要长期变更所使⽤的某个环境变量时,可以修改配置⽂件。
在Linux系统中,⽤户环境变量的设置⼯作习惯上在 /etc/profile ⽂件及宿主⽬录中 .bash_profile⽂件中进⾏,前者称为全局配置⽂件(对所有⽤户起作⽤),后者称为⽤户配置⽂件(允许覆盖全局配置)。
例:在当前⽤户环境中,将⽤于限制历史命令的环境变量HISTSIZE的值改为100。
例:编辑“~/.bash_profile”⽂件,修改PATH的设置,以便⽤户在下次登录后能够使⽤服务/opt/bin ⽬录作为默认的搜索路径。
# vi /root/.bash_profielPATH=$PATH:$HOME/bin:/opt/binExport PATH11.2 Shell位置变量为了在使⽤Linux程序时,⽅便通过命令⾏给程序提供操作参数,Bash引⼊了位置变量的概念。
linux基本shell语法1. 执行命令:输入命令后按下回车键即可执行。
2. 变量赋值:使用等号(=)将值赋给变量,例如:`variable_name=value`3. 输出变量:使用`echo`命令输出变量的值,例如:`echo variable_name`4. 注释:使用井号(#)来添加注释,注释会被解释器忽略。
5. 重定向输入输出:使用重定向符号来将命令的输入输出重定向到文件中,例如:`command > output_file` (将命令的输出重定向到文件)或 `command < input_file` (将文件内容作为命令的输入)6. 管道:使用竖线(|)将前一个命令的输出作为后一个命令的输入,例如:`command1 | command2` (将command1的输出作为command2的输入)7. 执行前一个命令的退出状态码:使用美元符号和问号(?)获取前一个命令的退出状态码(0表示命令成功执行),例如:`echo ?`8. 条件判断:使用`if`语句进行条件判断,例如:```if conditionthencommand1elsecommand2fi```9. 循环:使用`for`和`while`循环进行迭代操作,例如:```for item in listdocommanddone``````while conditiondocommanddone```10. 函数定义和调用:使用`function`关键字定义函数,例如:```function function_name {command1command2return value}``````function_name```以上是一些基本的Linux shell语法,还有更多高级用法可以进一步学习和探索。
linux shell详解Linux Shell 是一种运行在 Linux 操作系统上的命令行解释器,它提供了一种与系统进行交互的方式。
本文将详细介绍Linux Shell 的相关知识,包括 Shell 的基本概念、常用命令以及一些实用技巧。
## 一、Shell 的基本概念Shell 是用户与操作系统内核之间的接口,它接收用户输入的命令,并将其转发给内核执行。
在Linux 中,常见的Shell 有Bash (Bourne Again Shell)、Csh(C Shell)等。
Bash 是最常用的Shell,也是默认的 Shell。
Shell 的主要功能包括命令解析与执行、环境控制、脚本编程等。
用户可以通过Shell 提供的命令来执行文件操作、进程管理、权限控制等操作。
## 二、常用 Shell 命令1. 目录操作命令:- `ls`:列出当前目录下的文件和子目录。
- `cd`:切换当前工作目录。
- `pwd`:显示当前工作目录的路径。
2. 文件操作命令:- `cp`:复制文件或目录。
- `mv`:移动文件或目录。
- `rm`:删除文件或目录。
- `cat`:查看文件内容。
3. 进程管理命令:- `ps`:显示当前正在运行的进程。
- `top`:实时显示进程状态。
- `kill`:终止指定进程。
4. 网络命令:- `ping`:测试与指定主机的连通性。
- `ifconfig`:查看和配置网络接口信息。
- `ssh`:远程登录到其他主机。
5. 权限管理命令:- `chmod`:修改文件或目录的权限。
- `chown`:修改文件或目录的所有者。
- `chgrp`:修改文件或目录的所属组。
## 三、Shell 脚本编程Shell 脚本是一种可以用来编写一系列命令的脚本文件,它可以实现自动化任务的目的。
Shell 脚本通常以 `.sh` 作为文件后缀名。
以下是一个简单的Shell 脚本示例,用于统计指定目录下文件的数量:```shell#!/bin/bashdir_path="/path/to/directory"file_count=0# 遍历目录下的文件for file in $(ls $dir_path)doif [ -f $dir_path/$file ]; then((file_count++))fidoneecho "文件数量:$file_count"```以上脚本中,使用了 `for` 循环遍历目录下的文件,并通过判断是否是普通文件来统计文件数量。
Shell脚本中的高级技巧掌握控制台输入和输出处理Shell脚本中的高级技巧:掌握控制台输入和输出处理Shell脚本是一种在Unix和类Unix系统中广泛使用的脚本语言,它在系统管理、任务自动化和软件部署等方面有着重要的作用。
掌握Shell脚本的高级技巧可以让我们编写更加高效、功能更强大的脚本。
本文将介绍如何在Shell脚本中掌握控制台输入和输出处理的高级技巧。
一、获取控制台输入在Shell脚本中,我们经常需要从控制台获取用户输入的数据,然后根据输入的数据执行相应的操作。
下面是几种常用的获取控制台输入的方法:1. 使用read命令read命令可以用于从标准输入读取用户输入的数据,并将数据赋值给指定的变量。
例如,我们可以使用以下命令获取用户的姓名:```shellread -p "请输入您的姓名:" nameecho "您的姓名是:$name"```在上面的例子中,-p参数指定了提示信息,name是变量的名称。
用户输入的数据将赋值给name变量,并通过echo命令输出。
2. 从命令行参数获取输入除了使用read命令获取用户输入,我们还可以从命令行参数中获取输入的数据。
在Shell脚本中,$0表示脚本本身,$1、$2等表示传递给脚本的参数。
下面是一个简单的例子:```shellecho "脚本名称:$0"echo "第一个参数:$1"echo "第二个参数:$2"```在上面的例子中,我们通过echo命令输出了脚本名称和传递给脚本的参数。
二、处理控制台输出在Shell脚本中,我们经常需要将程序执行的结果输出到控制台,或将结果保存到文件中。
下面是几种常用的处理控制台输出的方法:1. 使用echo命令输出echo命令可以用于将指定的内容输出到控制台。
例如:```shellecho "Hello, World!"```上面的命令将输出Hello, World!到控制台。
shell基础知识总结1. shell 对于⼀台计算机⽽⾔,其硬件受系统内核的控制,使⽤者想要控制计算机,就必须有与系统内核进⾏通讯的⼿段。
⽽shell就是使⽤者与计算机进⾏通讯的⼿段之⼀。
从命名上看,shell其实是相对于kernel(内核)⽽⾔,指系统与外界(使⽤者)进⾏接触的部分,⼀个提供系统功能给⽤户使⽤的软件,它接受来⾃⽤户的指令,然后调⽤相应的应⽤程序。
为了满⾜不同的需求,shell提供了两种执⾏命令⽅式:a. 交互式:解释并执⾏⽤户输⼊的命令或者⾃动地解释和执⾏预先设定好的⼀连串的命令。
b. 程序设计式:作为⼀种脚本语⾔,提供变量、控制结构和函数,再通过解释器解释并执⾏。
Linux上常见的shell有sh、bash、ksh、tcsh等,不同解释器在某些语法的执⾏⽅⾯可能有些不同。
通过查看/etc/shells⽂件就可以知道本系统所⽀持的shell解释器类型。
如shells的⽂件内容如下:ryeshen@~$ cat /etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh/bin/ksh/bin/zsh ⽽linux默认是⽤的解释器是bash。
在脚本头可以声明本脚本所使⽤的解释器,声明⽅式: #!/bin/bash2. 变量a. 赋值赋值⽅式:variable_name = variable_value等号两边不能有空格符;增加变量内容:PATH=”$PATH”:/home/bin取消变量:unset variable_name变量类型:可以使⽤declare [[-/+]aixr] [name[=value] …],其中-表⽰赋予变量属性,+表⽰去除变量属性,a-数组,i-整数,r-只读,x-环境变量b. ⾃定义变量与环境变量使⽤“=”赋值得到的⾃定义变量,这个变量的作⽤域为当前shell进程。
Shell脚本1.Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
2.Linux 的 Shell 种类众多,常见的有:∙Bourne Shell(/usr/bin/sh或/bin/sh)∙Bourne Again Shell(/bin/bash)∙ C Shell(/usr/bin/csh)∙K Shell(/usr/bin/ksh)∙Shell for Root(/sbin/sh)由于易用和免费,Bash 在日常工作中被广泛使用。
同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像#!/bin/sh,它同样也可以改为#!/bin/bash。
#!告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
3.echo 命令用于向窗口输出文本。
Shell变量1.定义变量时,变量名不加美元符号($,PHP语言中变量需要)变量名和等号之间不能有空格变量名的命名须遵循如下规则:∙命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
∙中间不能有空格,可以使用下划线(_)。
∙不能使用标点符号。
∙不能使用bash里的关键字(可用help命令查看保留关键字)。
2.使用变量使用一个定义过的变量,只要在变量名前面加美元符号即可,例如:your_name="qinjx" echo $your_name echo ${your_name}变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界;推荐给所有变量加上花括号,这是个好的编程习惯。
3.只读变量使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
语法:readonly your_name4.删除变量使用 unset 命令可以删除变量。
语法:unset variable_name变量被删除后不能再次使用。
unset 命令不能删除只读变量。
5.变量类型运行shell时,会同时存在三种变量:∙1) 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell 启动的程序不能访问局部变量。
∙2) 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
注:必要的时候shell脚本也可以定义环境变量。
∙3) shell变量 shell变量是由shell程序设置的特殊变量。
注:shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。
Shell字符串字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
单双引号的区别跟PHP类似。
1.单引号str='this is a string'单引号字符串的限制:∙单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;∙单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
2.双引号your_name='qinjx'str="Hello, I know you are \"$your_name\"! \n"双引号的优点:∙双引号里可以有变量∙双引号里可以出现转义字符3.拼接字符串your_name="qinjx"greeting="hello, "$your_name" !"greeting_1="hello, ${your_name} !"echo $greeting $greeting_14.获取字符串长度string="abcd" echo ${#string}#输出 45.提取子字符串从字符串第2个字符开始截取4个字符:string="runoob is a great site"echo ${string:1:4}# 输出 unoo6.查找子字符串查找字符 "i或s" 的位置:string="runoob is a great company"echo `expr index "$string" is`# 输出 8注意:以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。
Shell数组bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
数组元素的下标由0开始编号。
获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
1.定义数组在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。
定义数组的一般形式为:数组名=(值1值2...值n)例子:array_name=(value0 value1 value2 value3)还可以单独定义数组的各个分量:array_name[0]=value0 array_name[1]=value1array_name[n]=valuen可以不使用连续的下标,而且下标的范围没有限制。
2.读取数组读取数组元素值的一般格式是:${数组名[下标]}使用 @ 或 * 符号可以获取数组中的所有元素,例如:echo ${array_name[@]}echo ${array_name[*]}3.获取数组的长度获取数组长度的方法与获取字符串长度的方法相同,例如:# 取得数组元素的个数 length=${#array_name[@]}# 或者length=${#array_name[*]}# 取得数组单个元素的长度lengthn=${#array_name[n]}Shell注释以"#"开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号。
如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
Shell传递参数在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。
n代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……($0为执行的文件名)用来处理参数的几个特殊字符:$* 与 $@ 区别:∙相同点:都是引用所有参数。
∙不同点:只有在双引号中体现出来。
假设在脚本运行时写了三个参数1、2、3,,则" * " 等价于"1 2 3"(传递了一个参数),而"@" 等价于"1" "2" "3"(传递了三个参数)。
Shell基本运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"两点注意:∙表达式和运算符之间要有空格,例如2+2 是不对的,必须写成2 + 2,这与我们熟悉的大多数编程语言不一样。
∙完整的表达式要被` `包含,注意这个字符不是常用的单引号,在Esc 键下边。
1.算数运算符下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b]是错误的,必须写成[ $a == $b ]。
注意:∙乘号(*)前边必须加反斜杠(\)才能实现乘法运算;∙if...then...fi 是条件语句,后续将会讲解。
∙在MAC 中shell 的expr 语法是:$((表达式)),此处表达式中的"*" 不需要转义符号"\" 。
if[ $a == $b ]then echo "a 等于 b"fiif[ $a != $b ]then echo "a 不等于 b"fi2.关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:3.布尔运算符下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:4.逻辑运算符Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:5.字符串运算符下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":6.文件测试运算符文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:Shell echo命令1.显示转义字符echo "\"It is a test\""输出结果:"It is a test"2.显示变量read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量#!/bin/sh read name echo "$name It is a test"输出结果:OK #标准输入OK It is a test #输出3.显示换行echo -e "OK! \n"# -e 开启转义echo "It it a test"输出结果:OK!It it a test4.显示不换行echo -e "OK! \c"# -e 开启转义 \c 不换行echo "It is a test"输出结果:OK!It is a test5.显示结果定向至文件echo "It is a test"> myfile6.原样输出字符串,不进行转义或取变量(用单引号)echo '$name\"'输出结果:$name\"7.显示命令执行结果echo `date`输出结果:ThuJul2410:08:46 CST 2018注意:这里使用的是反引号`, 而不是单引号'。