栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux学习笔记06 Shell编程基础

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux学习笔记06 Shell编程基础

Linux Shell编程

文章目录
  • Linux Shell编程
    • 1. 概述
      • 1.1 Shell脚本(Shell script)
      • 1.2 Shell编程入门实例
      • 1.3 运行Shell脚本的几种方法
    • 2. Shell变量
      • 2.1 变量定义和访问
        • 1. 变量的定义
          • 三种定义变量的方式
        • 2. 变量的访问
        • 3. 引号的使用
        • 4. 命令替换
      • 2.2 变量类型
        • 1. 变量值输出
          • echo输出
        • 2. 变量值输入
        • 3. 数组
    • 3.表达式与运算符
      • 3.1 算术表达式
      • 3.2 逻辑表达式
    • 4. Shell控制结构
      • 4.1 分支结构
      • 4.2 循环结构:
      • 4.3 函数结构
        • 函数的定义
        • 定义及变体
        • 函数调用与参数传递
        • 获取Shell函数返回结果的方法一般有如下三种。
      • 4.4 Shell高阶
        • 1. 数值比较运算符
        • 2. 逻辑运算符
        • 3. 字符串检测和比较运算符
        • 4. 文件测试运算符

1. 概述

shell编程就是对一堆Linux命令的逻辑化处理!

1.1 Shell脚本(Shell script)
  • 基于Shell语言的语法规则编写而成,支持Linux/UNIX下的命令的调用。

  • Shell语言是一种解释型语言

  • 不需要经过编译、汇编等过程。

  • Shell脚本扩展名为 “*.sh”。

  • 本身是一个文本文件

Bash是Ubuntu下默认的Shell解释程序。

1.2 Shell编程入门实例

进入Linux根目录,使用touch hello.sh创建一个名为hello.sh的shell脚本
使用vi命令打开该文件,输入如下代码并保存退出:

#!/bin/bash
#第一个shell小程序
echo hello world!

第一行比较特殊,#! 后面跟的是解释器的路径(shell本身就是一种解释型语言),解释器的路径是/bin/bash。一般都会以#!开始来指定使用的shell类型,除了bash shell以外,还有很多版本的shell, 例如zsh、dash等等…不过bash shell还是我们使用最多的。

第二行以#符号开始,表示本行是注释

第三行中的echo是linux中的输出命令,该行的意思就是输出hello world!

1.3 运行Shell脚本的几种方法

方法1:为Shell脚本添加可执行权限

使用chmod命令赋予该脚本可执行的权限,然后再执行:

john@yu:~/shell$ chmod +x test01.sh   #给脚本添加运行权限
john@yu:~/shell$ ./test01.sh   #运行脚本文件,注意./不能省略
john@yu:~/shell$ /home/yu/shell/test01.sh   #通过绝对路径的方式运行脚本文件

方法2:直接使用bash或sh来执行Shell脚本。

john@yu:~/shell$ bash test01.sh   #使用Bash运行shell脚本
john@yu:~/shell$ sh test01.sh   #使用sh运行Shell脚本

方法3:使用source 命令执行Shell脚本。

john@yu:~/shell$ source test01.sh   #使用source运行shell脚本
john@yu:~/shell$ . test01.sh   #使用点号.运行shell脚本 
2. Shell变量 2.1 变量定义和访问 1. 变量的定义
  • 变量名=变量值

  • 注意,等号两边不能有空格。

三种定义变量的方式
VariableName=Variablevalue
VariableName='Variablevalue'
VariableName="Variablevalue"
  • 如果Variablevalue不包含任何空白符(例如空格、Tab缩进等),那么可以不使用引号;

  • 如果 Variablevalue包含了空白符,那么就必须使用引号包围起来。

2. 变量的访问
  • 要获取一个变量的值,只需在变量名前面加一个 $

  • 已定义的变量,可以被重新赋值。

  • 注意,对变量重新赋值时,不能在变量名前加$。

3. 引号的使用
  • 单引号:即使单引号里面有变量和命令也会把它们原样输出。

  • 双引号:先解析里面的变量和命令。

  • 反引号:反引号(``)位于 Esc 键的下方。反引号主要用于命令替换。

4. 命令替换
  • 第一种方式是把命令用反引号

  • 第二种方式把命令用 $() 包围起来。(并不是每一种Shell解释器都支持)

2.2 变量类型
  • 用户变量
  • 环境变量
  • 内置变量

shell编程中有两种变量,一种是我们自己定义的变量(自定义变量),第二种是Linux已定义的环境变量(如 PATH,HOME等等……)这类变量我们可以直接使用。

#!/bin/bash
#使用环境变量
echo $PATH
#自定义变量hello
hello="hello world"
echo $hello

定义变量的时候,“=”左右不能有空格。

1. 变量值输出
  • echo输出
    • -e:识别输出内容里面的转义字符;
    • -n:忽略结尾的换行。
  • printf输出

  • 换行需要自己加“n”

2. 变量值输入

read [参数] [变量名]

  • read -s -p “Enter Password:” password

  • echo -e “nThe password your input is:$password”

3. 数组
  • 数组定义

  • 读取数组元素值

3.表达式与运算符 3.1 算术表达式

bash本身并不支持数学运算。

  • 通过expr命令

  • 操作数(用于计算的数)和运算符之间一定要有空格

val=`expr 100 / 2`
val=`expr 100/2` #此时输出的并不是运算结果。
  • 使用$[]表达式
echo $[100/2] #不要求有空格
3.2 逻辑表达式
  • test命令

    test 逻辑表达式

  • 左方括号

    [ 逻辑表达式 ] # 逻辑表达式两边必须有空格
    
4. Shell控制结构 4.1 分支结构

Condition中需要包含的逻辑表达式指定运算命令。实践中,一般可以使用 “(())”或者“[]” 来计算逻辑表达式的值。

4.2 循环结构:

while 语句

until 语句

4.3 函数结构 函数的定义 定义及变体

return与其他语言中的用法不一样,详见“9.5.3函数的返回值”

函数调用与参数传递
  • 其一,不传递参数:

    函数名

  • 其二,传递参数。函数名字后接参数列表,参数之间以空格分隔。

    函数名 参数1 参数2 …… 参数n

    • $1 表示第一个参数,

    • $2 表示第二个参数

    • $#获取传递的参数的个数;

    • 通过 @ 或 者 @或者 @或者*一次性获取所有的参数。

获取Shell函数返回结果的方法一般有如下三种。
  • 其一,直接从函数内部输出数据。

    例如,前两节的例子中,我们都是使用echo命令直接从函数内部输出结果。

  • 其二,使用全局变量。

    首先定义全局变量,在函数中将计算结果赋给全局变量,然后脚本中其他位置,通过访问全局变量,可以获得相应的计算结果。Shell函数中定义的变量默认是全局变量,函数与其所在脚本共享该全局变量。可使用local关键词定义局部变量。

  • 其三,使用内置变量。

    通过 ? 这 一 个 特 殊 的 内 置 变 量 , 可 用 于 获 取 上 一 个 命 令 执 行 后 的 返 回 结 果 。 因 而 在 函 数 调 用 后 , 可 以 使 用 ?这一个特殊的内置变量,可用于获取上一个命令执行后的返回结果。因而在函数调用后,可以使用 ?这一个特殊的内置变量,可用于获取上一个命令执行后的返回结果。因而在函数调用后,可以使用?来接收函数函数返回结果。

4.4 Shell高阶 1. 数值比较运算符 2. 逻辑运算符 3. 字符串检测和比较运算符 4. 文件测试运算符
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号