news 2026/6/25 22:11:35

Java技术八股学习Day26

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java技术八股学习Day26

Shell 核心概念

(1)定义与定位

Shell 是用户与 Linux 操作系统之间的命令行接口,本质是 “对 Linux 命令的逻辑化处理”,可接收并执行用户输入的命令,支持批处理,占用资源少、效率高。它与 GUI 并列,是操作系统的重要交互方式,主流版本为 Bash Shell。

(2)学习意义
  • 提升工作效率:适用于服务监控、部署、日志分析、数据备份等运维场景,实现自动化操作;
  • 求职需求:多数互联网公司后端开发岗位要求掌握 Shell 脚本语言;
  • 互补性:与 Python 搭配,Shell 适合简单自动化任务,Python 适合复杂业务逻辑开发。

Shell 入门:Hello World

(1)核心步骤
  1. 新建脚本文件:touch helloworld.sh(扩展名.sh仅为标识,不影响执行);
  2. 添加执行权限:chmod +x helloworld.sh
  3. 编写脚本:通过vim编辑文件,首行#!/bin/bash指定 Shell 类型,echo为输出命令;

    bash

    运行

    #!/bin/bash echo "helloworld!" # # 开头为注释
  4. 运行脚本:./helloworld.sh(需加./表示当前目录,避免系统在 PATH 中查找)。

Shell 变量

(1)变量分类
  • 自定义变量:用户自行定义,仅当前 Shell 实例有效,命名规则:字母 / 数字 / 下划线组成,首字符不能为数字,无标点和空格,不使用 Bash 关键字;
  • 环境变量:Linux 预定义(如PATHHOMESHELL),用env命令查看,直接通过$变量名使用(如echo $HOME);
  • Shell 变量:Shell 程序自带的变量,部分为环境变量,部分为局部变量,保障 Shell 正常运行。
(2)变量使用
  • 定义:变量名="值"(如name="SnailClimb");
  • 引用:$变量名(如echo $name)。

Shell 字符串操作

字符串是 Shell 核心数据类型,支持单引号、双引号包裹,操作灵活:

(1)单双引号区别
  • 单引号:特殊符号(如$、反引号)无特殊含义,原样输出;
  • 双引号:支持$(变量引用)、反引号(命令执行)、\(转义),其他符号原样输出。
(2)常用操作
  • 拼接:双引号中直接拼接("hello, $name"),单引号需拼接变量('hello, '$name'');
  • 长度:${#字符串}(如echo ${#name})或expr length "$字符串"
  • 截取:${字符串:起始索引:长度}(如(${str:0:10}截取前 10 字符),或通过#/##/%/%%按匹配规则截取(如${var##*/}截取路径中文件名)。

Shell 数组

Bash 仅支持一维数组,无大小限制:

  • 创建:数组名=(元素1 元素2 ...)(如array=(1 2 3 4 5));
  • 长度:${#数组名[@]}${#数组名[*]}
  • 访问:${数组名[索引]}(索引从 0 开始,如echo ${array[2]});
  • 操作:unset 数组名[索引]删除指定元素,unset 数组名删除整个数组;
  • 遍历:for i in ${数组名[@]}; do echo $i; done

Shell 基本运算符

Shell 支持 6 类运算符,需通过特定格式使用:

(1)算术运算符
  • 常用:+(加)、-(减)、*(乘,需转义\*)、/(除)、%(取余);
  • 用法:通过expr命令(如val=expr $a + ),或((表达式))(如$((a*b))`)。
(2)关系运算符(仅支持数字)
  • 常用:-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于);
  • 用法:if [ $a -eq $b ]; then ... fi
(3)其他运算符
  • 逻辑运算符:&&(与)、||(或),需用[[ ]]包裹(如[[ $a -lt 100 && $b -gt 50 ]]);
  • 字符串运算符:=(相等)、!=(不等)、-z(长度为 0)、-n(长度非 0);
  • 文件运算符:-f(普通文件)、-d(目录)、-r(可读)、-w(可写)、-x(可执行)、-e(存在)(如if [ -f $file ]; then ... fi)。

Shell 流程控制

(1)if-elif-else 条件语句

bash

运行

if [ 条件1 ]; then 执行语句1 elif [ 条件2 ]; then 执行语句2 else 执行语句3 fi
  • 注意:条件表达式需用[ ]包裹,运算符与变量间需空格。
(2)for 循环语句
  • 列表循环:for 变量 in 列表; do 执行语句; done(如for loop in 1 2 3; do echo $loop; done);
  • 数值循环:for((i=1; i<=5; i++)); do 执行语句; done
(3)while 循环语句
  • 基本循环:while(( 条件 )); do 执行语句; done(如while(( $int<=5 )); do echo $int; let "int++"; done);
  • 无限循环:while true; do 执行语句; done
  • 读取键盘:while read 变量; do 执行语句; done(需按CTRL-D退出)。

Shell 函数

(1)无参数无返回值函数

bash

运行

函数名(){ 执行语句 } # 调用 函数名
(2)有返回值函数

返回值通过return指定(仅支持数字),通过$?获取:

bash

运行

funWithReturn(){ return $((a+b)) } funWithReturn echo "结果:$?"
(3)带参数函数
  • 参数获取:$1-$n(第 1 到第 n 个参数)、$#(参数个数)、$*(所有参数拼接为字符串);
  • 示例:

bash

运行

funWithParam(){ echo "第一个参数:$1" echo "参数总数:$#" } funWithParam 1 2 3 # 调用时传入参数
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:55:01

用Z-Image-Turbo做了个AI画展,效果超出预期

用Z-Image-Turbo做了个AI画展&#xff0c;效果超出预期 上周末&#xff0c;我突发奇想&#xff1a;既然Z-Image-Turbo能在本地跑得又快又稳&#xff0c;何不把它当成我的“数字策展人”&#xff0c;办一场只属于自己的AI画展&#xff1f;没有画廊租金&#xff0c;不用预约布展…

作者头像 李华
网站建设 2026/6/17 7:45:19

OFA视觉蕴含模型效果展示:SNLI-VE测试集SOTA级图文匹配案例集

OFA视觉蕴含模型效果展示&#xff1a;SNLI-VE测试集SOTA级图文匹配案例集 1. 这不是“看图说话”&#xff0c;而是真正理解图像与文字的关系 你有没有遇到过这样的情况&#xff1a;一张图片里明明是两只鸟站在树枝上&#xff0c;配文却写着“一只猫在沙发上打盹”&#xff1f…

作者头像 李华
网站建设 2026/6/17 20:22:48

OCR速度有多快?不同硬件下的推理时间实测对比

OCR速度有多快&#xff1f;不同硬件下的推理时间实测对比 在实际业务中&#xff0c;OCR不是“能识别就行”&#xff0c;而是“必须快得刚刚好”——快到用户不觉得等待&#xff0c;又稳到关键信息不漏检。但很少有人真正测过&#xff1a;一张图从上传到框出文字&#xff0c;到…

作者头像 李华
网站建设 2026/6/18 12:31:32

车载诊断系统OBD-II集成CANFD:完整指南

以下是对您提供的博文《车载诊断系统OBD-II集成CAN FD:完整技术指南》的 深度润色与专业优化版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、老练、有“人味”,像一位深耕汽车电子15年的资深系统架构师在技术博客中娓娓道来; ✅ 所有模块(引言/原…

作者头像 李华
网站建设 2026/6/10 12:14:16

动手实操:我用lama重绘模型成功移除了图片中的文字

动手实操&#xff1a;我用lama重绘模型成功移除了图片中的文字 你有没有遇到过这样的情况&#xff1a;一张精心拍摄的风景照&#xff0c;却被右下角一行突兀的水印文字破坏了整体美感&#xff1b;一份重要的产品截图&#xff0c;上面密密麻麻的说明文字挡住了关键信息&#xf…

作者头像 李华
网站建设 2026/6/15 16:55:19

DAMO-YOLO惊艳效果:动态神经突触加载动画与检测进度条同步机制

DAMO-YOLO惊艳效果&#xff1a;动态神经突触加载动画与检测进度条同步机制 1. 什么是DAMO-YOLO智能视觉探测系统 你有没有试过上传一张图&#xff0c;盯着屏幕等结果时心里发慌——到底算完了没&#xff1f;卡了还是在忙&#xff1f;传统目标检测工具往往只给个静态“加载中”…

作者头像 李华