Linux教程

Linux入门

本文主要是介绍Linux入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux入门

  • 1.Linux系统安装
    • 设置ip命令
    • 查看IP地址
    • 查看子网掩码 和 网关
    • 填写 :wq 保存
    • 重启ip 命令
    • 查看ip命令
    • vm 连接 xshell
  • 2.Linux 基础命令
    • ls
    • cd
    • mkdir
    • touch
    • 查看命令
    • find
    • grep
    • pwd
    • 编辑
    • rm
    • awk
    • ps
    • Linux下管道模式与输出信息
    • yum
    • wget
    • Linux下用户权限操作
    • 数字法
  • 3.shell 入门
    • Shell
    • Shell脚本
    • Shell环境
    • 第一个shell脚本
    • 变量
    • Shell字符串
    • Shell数组
      • 1.定义数组
      • 2.读取数组
      • 3.获取数组
      • 4.获取数组的长度
    • Shell注释
  • 4.算术运算符
    • 关系运算符
    • if判断
    • if else判断
    • if else-if else
    • 布尔运算符
    • 逻辑运算符
    • 字符串运算符
    • 文件测试运算符
    • echo命令
    • printf命令
    • let命令
  • 5.Sheel 流程控制和函数
    • for循环
    • while循环
    • until循环
    • case ... esac
    • 跳出循环
    • Shell传递参数
    • Shell函数
    • 函数参数
    • 文件包含

1.Linux系统安装

设置ip命令

vi /etc/sysconfig/network-script/ifcfg-ens33

查看IP地址

vm - 编辑 - 虚拟网络编辑器 - DHCP设置
在这里插入图片描述

查看子网掩码 和 网关

vm - 编辑 - 虚拟网络编辑器 - NAT设置
在这里插入图片描述

填写 :wq 保存

在这里插入图片描述

重启ip 命令

systemctl restart network

查看ip命令

ip config

vm 连接 xshell

ip: 起始ip地址与结束IP地址之间

2.Linux 基础命令

ls

ls即为 list,意思是列出当前目录下的文件信息
ls -l: 查看目录下文件的详细信息,缩写为ll
ls -a: 查看目录下隐藏的文件
ls -d: 查看目录(常和-l选项一起用,如只想查看某个目录本身的信息,而不是目
录下的文件信息)
ls -t: 按文件时间先后顺序倒叙排列(常和-l选项一起使用)
ls -i: 查看文件的iNode号

cd

cd 命令 :进入磁盘的某个目录下[dir]
cd ./ 表示当前目录
cd …/ 表示上一层目录
cd …/…/ 表示向上两层目录
cd 进入用户根目录
cd ~ 进入用户根目录
cd / 进入系统根目录
cd 文件名 进入当前文件目录

mkdir

mkdir:创建文件夹
单个文件夹:mkdir 文件夹
多个文件夹:mkdir 文件夹1 文件夹2 文件夹3

touch

touch:创建文件
单个文件 touch 文件
多个文件 touch 文件1 文件2 文件3

查看命令

cat: 由第一行开始显示文件内容
tac: 从最后一行开始显示,可以看出tac是cat的倒写形式
nl: 显示的时候顺便显示行号
more: 一页一页地显示文件内容
tail: 只看结尾几行

find

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视
为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目
录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
1、命令格式
find [查找目录] [查找规则] [查找完后的操作]
即:find pathname -option [-print -exec -ok …]
2、命令功能
用于在文件树中查找文件,并做相应的处理,(有可能访问磁盘)。 3、命令参数
(1)pathname:表示所要查找的目录路径,例如”.”表示当前目录,
”/” 表示根目录。
(2)-print:将find找到的文件输出到标准输出。
(3)-exec:对找到的文件执行exec这个参数所指定的shell命令,相应的
形式为:-exec command {} ; 将查到的文件进行command操作,”{}”
就代替查到的文件。

grep

Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合
所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指
定任何文件名称,或是所给予的文件名为 - ,则 grep 指令会从标准输入设备读取
数据。
grep [参数][文件内容][文件或目录…]
参数:
-r 或 --recursive : 在某一目录下递归[所有子目录]查找某一字串此参数的效果和指
定"-d recurse"参数相同。grep -r “字串” 目录名
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。

pwd

Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。
执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
语法:
pwd [–help][–version]

编辑

1.vi 文件名
2.输入i或者a进入可编辑模式
3.编辑内容
4.保存退出,先按esc ,再输入保存退出命令
:w保存文件但不退出vi
:w file将修改另外保存到file中,不退出vi
:w!强制保存,不推出vi
:wq保存文件并退出vi
:wq!强制保存文件,并退出vi
q:不保存文件,退出vi
:q!不保存文件,强制退出vi
:e!放弃所有修改,从上次保存文件开始再编辑
5.最后回车,则再进入命令模式

rm

在Linux下删除文件用rm命令,具体用法如下
rm [选项] 文件
选项说明:
-f -force 忽略不存在的文件,强制删除,无任何提示
-i --interactive 进行交互式地删除
-r | -R --recursive 递归式地删除列出的目录下的所有目录和文件
-v --verbose 详细显示进行的步骤

awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk
在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件
逐行的读入,默认以空格为分隔符将每行切片,切开的部分再进行各种分
析处理。 awk是行处理器,相比较屏幕处理的优点,在处理庞大文件时不会
出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
语法:awk [选项参数] ‘script’ var=value 文件名
参数:
-F 指定分隔符
-f 调用脚本
-v 定义变量

ps

Linux ps (英文全拼:process status)命令用于显示当前进程的状态,
类似于 windows 的任务管理器。
语法:ps [options] [–help]
参数:
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-ef 显示所有命令,连带命令行

Linux下管道模式与输出信息

管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这
一特点决定 了容器使用的局限性。管道是Linux支持 的最初Unix IPC形式之一,具有以下特点: 数据只能由一
个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建立两个管道 。 管道只
能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。 注意:从管道读
数 据是一次性操作,数据一旦被 读,它就从管道中被抛弃,释放空间以便写更多的数据。 格式
command1 | command2 | command3
操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息没有直接处理能力。然后,传
递给下 一个命令,作为标准的输入
在这里插入图片描述

【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会
直接显示 在屏幕上面了。 通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面
【提醒注意】:

  1. 管道命令只处理前一个命令正确输出,不处理错误输出;
  2. 管道命令右边命令,必须能够接收标准输入流命令才行;

yum

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中 的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依
赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 语法:
yum [options] [command] [package …]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显
示安装的过程)等等。
command:要进行的操作。
package 操作的对象。
yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search

wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三
个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。“wget” 这个名称来源于
“World Wide Web” 与 “get” 的结合
使用方法格式:wget [选项] [参数] ,其中参数为:URL地址。
选项:
-a<日志文件>:在指定的日志文件中记录资料的执行过程;
-A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;
-b:进行后台的方式运行wget; -B<连接地址>:设置参考的连接地址的基地地址;
-c:继续执行上次终端的任务;
-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; -d:调试模式运行指令;
-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;
-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;
-h:显示指令帮助信息;
-i<文件>:从指定文件获取要下载的URL地址;
wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

Linux下用户权限操作

Chmod命令主要用于修改、设置文件权限
chmod 修改文件权限主要有两种方式: 字母法与数字法
字母法
chmod (u g o a) (+ - =) (r w x) (文件名)
以上是chmod的用法,每个括号是一个参数, 前三个括号主要放在一起使用即 chmod + 设置模式 + 文件名;
下面先介绍这些参数的意义:
参数:
u :user 表示该文件的所有者
g:group 表示与该文件的所有者属于同一组( group )者,即用户组
o:other 表示其它用户组
a:all 表示这三者皆是

  • :增加权限
  • :撤销权限
    = :设定权限
    r :read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
    w :write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
    x :excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
    用法:chmod + 设置模式 + 文件名 中间的设置模式,要分别对u(user), g(group), o(other)设置权限。
    注意:(chmod + 设置模式 + 文件名) 设置模式中包含对三种类型用户(u、g、o)的权限设置,这三者各自
    独立,互不干扰。

数字法

数字法是基于字母法的表示,如果字母法懂了,数字法就好懂,并且易于使用。
用法:chmod + 数字组合 + 文件名
数字组合一般包含三个数字:
第一个数字对应字母法的用户u(user)
第二个数字对应字母法的用户g(group)
第三个数字对应字母法的用户o(other)
另外:
r (read) ----------------> 4
w (write) ----------------> 2
x (excute) ----------------> 1
示例详解:
数字法:chmod 777 文件名 <-----------对应--------------> 字母法: chmod u+rwx, g+rwx, o+rwx 文
件名
第一个数字7:代表用户 u 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7
第二个数字7:代表用户 g 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7
第三个数字7:代表用户 o 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7

3.shell 入门

Shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一
种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问
操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形
界面 Shell。

Shell脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell
script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,
不是指开发 shell 自身。

Shell环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和
一个能解释执行的脚本解释器就可以了。
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)
  • ……

第一个shell脚本

1.touch 新建一个文本文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行
2.vi 文件名 按a或i,进入编辑状态
3.编辑代码
#!/bin/bash
echo “Hello World !”
4.按 esc键,再输入:wq 保存退出
5.给脚本一个可执行的权限:chmod +x 文件名
6.执行脚本
./文件名 或 /bin/sh 文件名 或 /当前目录/文件名

变量

1.定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:name=“lisa”
注意:变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。
同时,变量名的命名须遵循如下规则:

  • 1.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 2.中间不能有空格,可以使用下划线(_)。
  • 3.不能使用标点符号。
  • 4.不能使用bash里的关键字(可用help命令查看保留关键字)。

2.使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可:echo $name 或者 ${name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
3.只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 readonly name
4.删除变量
使用 unset 命令可以删除变量。unset name
5.变量类型

  1. 局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的; 定义命令:declare 变量名
    程序不能访问局部变量。
  2. 环境变量 : 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境; 定义命令:export 变量名(必须大写)
    变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量 :shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,
    有一部分是局部变量,这些变量保证了shell的正常运行

Shell字符串

4.获取字符串长度
格式: echo ${#变量名}
5.提取子字符串
s t r i n g : 开 始 位 置 : 结 束 位 置 6. 查 找 子 字 符 串 e x p r i n d e x " {string:开始位置:结束位置} 6.查找子字符串 expr index " string:开始位置:结束位置6.查找子字符串exprindex"变量" position(需要找的值)` 计算先出现的位置

Shell数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不
需要定义数组大小(与 PHP 类似)。与大部分编程语言类似,数组元素的下标由0开始。
获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

1.定义数组

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 … 值n)
还可以单独定义数组的各个分量
数组名[0]=值1
数组名[1]=值2
数组名[n]=值3
可以不使用连续的下标,而且下标的范围没有限制

2.读取数组

读取数组元素值的一般格式是:${数组名[下标]}

3.获取数组

使用@ 或 * 可以获取数组中的所有元素: 数 组 名 [ ∗ ] 或 {数组名[*]}或 数组名[∗]或{数组名[@]}

4.获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同( ${#数组名[*]}或${#数组名[@]}

Shell注释

单行注释
# 开头的行就是注释,会被解释器忽略。
多行注释
:<<字符
注释内容…
注释内容…
注释内容…
字符

4.算术运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例

  • 加法 expr $a + $b 结果为 30。 - 减法 expr $a - $b 结果为 -10
  • 乘法 expr $a * $b 结果为 200。 / 除法 expr $b / $a 结果为 2。 % 取余 expr $b % a 结 果 为 0 。 = 赋 值 a = a 结果为 0。 = 赋值 a= a结果为0。=赋值a=b 将把变量 b 的值赋给 a。
    == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。 != 不相等。用于比较两个数字,不相同则返回
    true。
    [ $a != b ] 返 回 t r u e 。 注 意 : 条 件 表 达 式 要 放 在 方 括 号 之 间 , 并 且 要 有 空 格 , 例 如 : [ b ] 返回 true。 注意:条件表达式要放在方括号之间,并且要有空格,例如: [ b]返回true。注意:条件表达式要放在方括号之间,并且要有空格,例如:[a==$b] 是错误的,必须写成 [ $a == KaTeX parse error: Can't use function '\)' in math mode at position 19: … 乘号(*)前边必须加反斜杠(\̲)̲才能实现乘法运算; 在 MAC…((表达式)),此处表达式中的 * 不需要转义符号 \。

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true [ $a -eq $b ] 返回 false
-ne 检测两个数是否不相等,不相等返回 true [ $a -ne $b ] 返回 true
-gt 检测左边的数是否大于右边的,如果是,则返回 true [ $a -gt $b ] 返回 false
-lt 检测左边的数是否小于右边的,如果是,则返回 true [ $a -lt $b ] 返回 true
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true [ $a -ge $b ] 返回 false
-le 检测左边的数是否小于等于右边的,如果是,则返回 true [ $a -le $b ] 返回

if判断

if语句语法格式
if condition
then
command1
command2

commandN
fi

if else判断

if语句语法格式
if condition
then
command1
command2

commandN
else
command
fi

if else-if else

if else-if else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi

布尔运算符

下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true [ ! false ] 返回 true
-o 或运算,有一个表达式为 true 则返回 true [ $a -lt 20 -o $b -gt 100 ] 返回 true
-a 与运算,两个表达式都为 true 才返回 true [ $a -lt 20 -a $b -gt 100 ] 返回 false

逻辑运算符

以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true

字符串运算符

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true [ $a = $b ] 返回 false
!= 检测两个字符串是否相等,不相等返回 true [ $a != $b ] 返回 true
-z 检测字符串长度是否为0,为0返回 true [ -z a ] 返 回 f a l s e − n 检 测 字 符 串 长 度 是 否 不 为 0 , 不 为 0 返 回 t r u e [ − n " a ] 返回 false -n 检测字符串长度是否不为 0,不为 0 返回 true [ -n " a]返回false−n检测字符串长度是否不为0,不为0返回true[−n"a" ] 返回 true
$ 检测字符串是否为空,不为空返回 true [ $a ] 返回 true

文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性
操作符 说明 举例
-b file 检测文件是否是块设备文件,如果是,则返回 true [ -b $file ] 返回 false
-c file 检测文件是否是字符设备文件,如果是,则返回 true [ -c $file ] 返回 false
-d file 检测文件是否是目录,如果是,则返回 true [ -d $file ] 返回 false
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,
则返回 true
[ -f $file ] 返回 true
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true [ -g $file ] 返回 false
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true [ -k $file ] 返回 false
-p file 检测文件是否是有名管道,如果是,则返回 true [ -p $file ] 返回 false
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true [ -u $file ] 返回 false
-r file 检测文件是否可读,如果是,则返回 true [ -r $file ] 返回 true
-w file 检测文件是否可写,如果是,则返回 true [ -w $file ] 返回 true
-x file 检测文件是否可执行,如果是,则返回 true [ -x $file ] 返回 true
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true [ -s $file ] 返回 true
-e file 检测文件(包括目录)是否存在,如果是,则返回 true [ -e $file ] 返回 true

echo命令

1.显示普通字符串
echo “字符串”
2.显示转义字符
echo “\转义字符 字符串 \转义字符” 3.显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
4 显示换行
-e “ 字符换\n” -e 开启转义
5.显示不换行
\c6.显示结果定向至文件
echo “字符串” >文件
7.原样输出字符串,不进行转义或取变量(用单引号) ‘字符串\转义符’
8.显示命令执行结果
date 注意:** 这里使用的是反引号 `, 而不是单引号 ’ 结果将显示当前日期

printf命令

printf 命令模仿 C 程序库(library)里的 printf() 程序。
printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字
符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo
自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments…]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表

序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下
的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数
以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed) \n 换行
\r 回车(Carriage return) \t 水平制表符
\v 垂直制表符
\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符

例子:printf “姓名:%s\n身高:%dcm\n体重:%dkg\n” “小明” “180” “75”

let命令

let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计
算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,
则必须引起来。
语法格式:let arg [arg …]
参数说明:
arg:要执行的表达式
实例:
自加操作:let no++
自减操作:let no–
简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20。

5.Sheel 流程控制和函数

for循环

与其他编程语言类似,Shell支持for循环。
for循环一般格式为:
for var in item1 item2 … itemN
do
command1
command2

commandN
done

while循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常
为测试条件。其格式为:
while condition
do
command
done

until循环

until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until
循环更加有用。
until 语法格式:
until condition
do
command
done
condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语
句,否则跳出循环。

case … esac

case … esac** 与其他语言中的 switch … case 语句类似,是一种多分枝选择结构,每个
case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case …
esac 语句,esac(就是 case 反过来)作为结束标记。
case 值 in
模式1)
模式1匹配成功
;;
模式2)
模式2匹配成功
;;
*)
以上都没匹配成功
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为
变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他
模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来
实现该功能:break和continue。
break
break命令允许跳出所有循环(终止执行后面的所有循环)
continue
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循
环。

Shell传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n 。n代表一
个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
参数处理 说明
$# 传递到脚本的参数个数
∗ 以 一 个 单 字 符 串 显 示 所 有 向 脚 本 传 递 的 参 数 。 如 " * 以一个单字符串显示所有向脚本传递的参数。 如" ∗以一个单字符串显示所有向脚本传递的参数。如"*“用「”」括起来
的情况、以"$1 $2 … $n"的形式输出所有参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
@ 与 @ 与 @与相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"
用「"」括起来的情况、以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数
$- 显示Shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
$
与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”
    (传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。

Shell函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用
shell中函数的定义格式如下:
[ function ] funname [()]
{
action;
[return int;]
}
说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为
    返回值。 return后跟数值n(0-255
    注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解
    释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。

函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值
,例如,$1表示第一个参数,$2表示第二个参数…
参数处理 说明
$# 传递到脚本的参数个数
∗ 以 一 个 单 字 符 串 显 示 所 有 向 脚 本 传 递 的 参 数 。 如 " * 以一个单字符串显示所有向脚本传递的参数。 如" ∗以一个单字符串显示所有向脚本传递的参数。如"*“用「”」括起来
的情况、以"$1 $2 … $n"的形式输出所有参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
@ 与 @ 与 @与*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"
用「"」括起来的情况、以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数
$- 显示Shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

文件包含

和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为
一个独立的文件。
shell中文件包含的定义格式如下:
filename # 注意点号(.)和文件名中间有一空格

source filename
注:被包含的文件 test.sh 不需要可执行权限

这篇关于Linux入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!