暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

深入解析Shell脚本编程:从基础到实战的全面指南

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多宝贵地意见,我们一起提升,守住自己的饭碗。

正文开始

 

一、Shell基础入门

1.1 Shell简介与分类

Shell是用户与Linux内核交互的桥梁,负责解析用户命令并传递给内核执行。主要分为两类:

  • • 图形界面Shell(GUI Shell):如KDE、Gnome,提供可视化操作界面。
  • • 命令行界面Shell(CLI Shell):主流实现为Bash,通过命令行输入指令,是Linux默认Shell。

1.2 第一个Shell脚本编写与执行

#!/bin/bash  # 指定解释器
echo "Hello World!"  # 输出语句

执行方式:

  1. 1. 直接调用解释器bash test.sh
  2. 2. 赋予执行权限chmod +x test.sh && ./test.sh
  3. 3. 当前Shell执行source test.sh
    . test.sh

1.3 变量系统

  • • 系统变量:通过env
    set
    查看,如$HOME
    (用户家目录)、$PATH
    (可执行路径)。
  • • 普通变量VAR=value
    ,引用需加$
    ,如echo $VAR
  • • 位置变量$1-$n
    表示脚本参数,第10个参数需用${10}
  • • 特殊变量$0
    (脚本名)、$?
    (上一命令退出状态)、$$
    (当前进程PID)。

二、Shell核心语法与操作

2.1 字符串处理

  • • 长度获取${#VAR}
    ,如echo ${#"hello"}
    输出5。
  • • 切片操作${VAR:offset:length}
    ,如${"hello":1:3}
    输出"ell"。
  • • 替换与截取
    VAR="hello world"
    echo ${VAR/world/WORLD}  # 替换第一个匹配:hello WORLD
    echo ${VAR#*o}         # 截取首个o后的内容:llo world

2.2 表达式与运算符

  • • 条件表达式:使用[ ]
    [[ ]]
    ,如[ $a -eq $b ]
  • • 整数比较-eq
    (等于)、-gt
    (大于)、-lt
    (小于)。
  • • 文件测试-e
    (存在)、-f
    (文件)、-d
    (目录),如[ -f etc/passwd ]

2.3 流程控制

  • • if语句
    if [ $num -gt 10 ]; then
        echo "大于10"
    else
        echo "小于等于10"
    fi

  • • 循环结构
    # for循环
    for i in {1..5}; do echo $idone

    # while循环
    i=1; while [ $i -le 5 ]; do echo $ilet i++; done

  • • 分支结构
    case $var in
        "a"echo "匹配a" ;;
        "b"echo "匹配b" ;;
        *) echo "默认" ;;
    esac

三、文本处理与正则表达式

3.1 文本处理三剑客

  • • grep:过滤匹配行,支持正则,如grep "error" log.txt
  • • sed:流编辑器,用于替换、删除等操作:
    sed 's/old/new/g' file.txt  # 全局替换old为new
  • • awk:格式化处理文本,支持字段操作:
    awk -F: '{print $1}' /etc/passwd  # 按:分割,打印第一字段

3.2 正则表达式

  • • 基础符号
    • • .
      :匹配任意字符(除换行)。
    • • ^
      :行首匹配,$
      :行尾匹配。
    • • *
      :匹配前一个字符0次或多次,+
      :1次或多次。
  • • 扩展应用
    echo "abc123" | grep -E "[a-z]+[0-9]+"  # 匹配字母后跟数字

四、实战案例:自动化运维脚本

4.1 批量创建用户

#!/bin/bash
USER_FILE=users.txt
[ -f $USER_FILE ] && mv $USER_FILE ${USER_FILE}.$(date +%F)
touch $USER_FILE

for i in {1..10}; do
    username=user$i
    password=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)
    useradd $username && echo "$password" | passwd --stdin $username
    echo "用户:$username,密码:$password" >> $USER_FILE
done

4.2 监控主机存活状态

#!/bin/bash
IP_LIST="192.168.1.1 192.168.1.2"
for ip in $IP_LISTdo
    ping -c 1 $ip &>/dev/null
    if [ $? -eq 0 ]; then
        echo "$ip 存活"
    else
        echo "$ip 不可达" | mail -s "主机监控" admin@example.com
    fi
done

4.3 网站可用性检测

#!/bin/bash
URL="https://www.baidu.com"
status_code=$(curl -s -o dev/null -w "%{http_code}" $URL)
if [ $status_code -ne 200 ]; then
    echo "网站状态异常:$status_code" | mail -s "网站监控" admin@example.com
fi

五、高级技巧与工具

5.1 信号处理与后台运行

  • • kill命令:发送信号终止进程,如kill -9 $PID
    强制终止。
  • • nohup:后台运行脚本,如nohup ./script.sh &> log.txt &

5.2 网络与文件传输

  • • scp:安全复制文件,scp /local/file user@remote:/path
  • • rsync:高效同步文件,rsync -avz /src/ user@remote:/dst/ --delete

5.3 交互式脚本(Expect)

#!/usr/bin/expect
spawn ssh user@remote
expect "password:"
send "your_password\r"
expect "$ "
send "ls -l\r"
expect "$ "
send "exit\r"
expect eof

六、最佳实践与调试

6.1 脚本优化建议

  • • 注释规范:关键步骤添加注释,如# 检查文件是否存在
  • • 错误处理:使用set -e
    确保脚本遇错终止,set -x
    打印执行过程。
  • • 参数校验:使用getopts
    解析参数,如./script.sh -f file.txt -n 10

6.2 调试工具

  • • echo调试:输出变量值,如echo "当前路径:$PATH"
  • • shell选项bash -x script.sh
    跟踪执行步骤,bash -n script.sh
    检查语法。

总结

Shell脚本是Linux运维的核心技能,通过掌握基础语法、文本处理工具及实战案例,可大幅提升自动化运维效率。建议从简单脚本开始,逐步挑战复杂场景,结合实际需求不断优化脚本逻辑,最终实现高效的系统管理与故障处理。

关键点

实战讲解:通过实际项目案例帮助读者掌握仓颉的使用技巧,提升实践能力。

配套资源丰富:460页教学PPT + 490分钟实战讲解视频,全栈级仓颉开发教程,助你快速掌握鸿蒙生态核心语言。

仓颉与华为技术生态深度结合:从基础语法到实战应用,用仓颉开启华为智能开发新时代。

高效编码:帮助开发者提升编码效率,特别是在大规模数据处理和高性能计算场景中。

前瞻性技术:探索仓颉语言在未来技术发展中的应用潜力,展现其在人工智能、云计算等领域的前景。

内容简介

华为自研的仓颉语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好的开发体验和卓越的程序性能。

本书循序渐进地讲解了仓颉语言的核心知识,并通过具体实例的实现过程演练了开发仓颉语言程序的关键方法和流程。全书共19 章,分别讲解了从仓颉语言的基础语法、数据结构、面向对象编程、网络编程到多线程与并发处理等内容,最后通过实战项目——圆角图片视图库的开发,系统展示了仓颉语言的核心语法知识和实际应用技巧。 

本书通俗易懂而不失技术深度,案例丰富,实用性强,涵盖了华为开发技术的最新动态和实践案例,同时涵盖了其他同类图书中很少涉及的开发工具与平台介绍。本书适合华为仓颉编程语言的初学者和进阶读者作为自学教程,也可作为培训学校和各大院校的相关专业的教学参考书。

作者简介

刘陈,山东大学计算机通信硕士,精通Java、C、C++、Python、Objective-C、Swift等多种编程语言。拥有10年的Android和iOS开发经验,以及5年的HarmonyOS开发经验。现任浪潮信息资深移动开发架构师和HarmonyOS技术专家,曾在HTC、联想等知名企业担任软件开发工程师、项目经理、产品技术主管等重要职务,具有丰富的技术研发和管理经验

 

京东链接:https://item.jd.com/15006134.html

当当链接:https://product.dangdang.com/29877942.html

 


END
往期文章回顾

文中的概念来源于互联网,如有侵权,请联系我删除。

欢迎关注公众号:小周的数据库进阶之路,一起交流数据库、中间件和云计算等技术。如果觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。



文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论