Linux Shell——基本语法(变量、流程控制)

  最近学习了shell脚本,记录一下相关语法

一、变量

   变量是很重要的,是用于存储数据值的容器

变量名要遵循以下规则:
(1)只能包含字母、数字和下划线
(2)不能以数字开头
(3)不能使用shell关键字

  1. 定义变量
    语法:var_name=value

等号之间不能有空格

在这里插入图片描述

  1. 使用变量
    语法:$var_name 或者 ${var_name}

在这里插入图片描述

  1. 只读变量
    定义变量之后 , 使用 readonly 变量名 命令将变量变为只读

只读变量不能被修改

在这里插入图片描述

  1. 删除变量
    变量定义之后可以删除,但是只读变量不能被删除
    语法:unset 变量名

在这里插入图片描述

  1. 变量类型
    shell的变量是有类型的,下面介绍常用的几种,分别是字符串、整数变量、数组变量、环境变量、特殊变量
    5.1 字符串
    字符串可以用单引号、也可以用双引号,但是两者是有区别的,单引号括起来的字符串输出时带有变量是无效的,会原样输出,双引号则相反
    下面介绍几种字符串常用操作:
str = 'linux shell'
字符串拼接   'str'$str'str'
获取字符串长度 ${#str}
提取子字符串  ${str:start:end}

在这里插入图片描述
5.2 整数变量
语法:declare -i 变量名=变量值

使用declare -i 可以定义一个整数变量,如果变量值是非整数,则变量会被赋值为0

5.3 数组变量
语法:declare -A 数组名=数组列表

使用 declare -A 可以定义一个数组变量

5.4 环境变量

5.5 特殊变量
特殊变量具有特殊的含义:

常见的特殊变量有以下:
$0 表示脚本名称
$1…n 表示传递给脚本的参数
$# 表示传递给脚本的参数数量
$? 表示上一个命令的退出状态,可判断上一个命令是否执行成功

二、流程控制

  1. 条件控制
    语法:
    if 条件
    then
      语句
    elif 条件
    then
      语句
    else
      语句
    fi

if条件句不允许某一分支的语句是空

在这里插入图片描述
在这里插入图片描述

  1. 循环控制
    2.1 for循环
    语法:
    for item in 字符串/列表
    do
      语句
    done

2.2 while循环
语法:
while 条件
do
  语句
done

终止循环使用 break
跳出当前循环使用 continue

在这里插入图片描述

  1. 多分支控制
    语法:
    case 值 in
    模式)
    语句
    ;;
    *)
    语句
    ;;
    esac

;;是一个模式的结束
当值没有匹配到任何一个模式时 匹配*

在这里插入图片描述

总结

   最后继续总结一下吧:

   变量以及变量类型
   流程控制包括条件控制、循环控制、多分支控制

  希望对看到本文的你有帮助。





上一篇 Linux命令——压缩和解压缩
创作不易,记得点赞收藏哦
下一篇 待定

相关推荐

  1. 变量的运算+流程控制语句

    2023-12-23 00:00:03       16 阅读
  2. 【go语言实践】基础篇 - 流程控制

    2023-12-23 00:00:03       34 阅读
  3. Python基础流程控制语句

    2023-12-23 00:00:03       9 阅读
  4. 【Go 快速入门】基础语法 | 流程控制 | 字符串

    2023-12-23 00:00:03       36 阅读
  5. js流程控制语句

    2023-12-23 00:00:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 00:00:03       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 00:00:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 00:00:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 00:00:03       18 阅读

热门阅读

  1. Unity-时间

    2023-12-23 00:00:03       39 阅读
  2. etcd是什么

    2023-12-23 00:00:03       34 阅读
  3. NLP中的嵌入层

    2023-12-23 00:00:03       38 阅读
  4. 控制中存在的一些问题(注意事项)

    2023-12-23 00:00:03       28 阅读
  5. 基于改进的粒子群算法的双机器人路径规划

    2023-12-23 00:00:03       42 阅读
  6. Android 13 - Media框架(25)- OMXNodeInstance(二)

    2023-12-23 00:00:03       36 阅读
  7. 基于YALMIP求解含SOP+阶锥的配电网重构附Matlab代码

    2023-12-23 00:00:03       42 阅读
  8. 单元测试优化实践总结

    2023-12-23 00:00:03       33 阅读
  9. 使用MATLAB中的`xlswrite`函数将数据写入Excel文件

    2023-12-23 00:00:03       46 阅读
  10. 傅里叶变换全息图 Matlab

    2023-12-23 00:00:03       46 阅读
  11. Python---案例-多任务版TCP服务端程序开发

    2023-12-23 00:00:03       34 阅读
  12. LeetCode刷题(文章链接汇总)

    2023-12-23 00:00:03       47 阅读
  13. linux RCU 使用实例

    2023-12-23 00:00:03       31 阅读