当前位置: 首页 > article >正文

从0开始学习shell脚本

了解Shell和Shell脚本

Shell:Shell是一个命令解释器,用来执行用户输入的命令。常用的Shell包括BashZshKsh等。Linux默认的Shell通常是Bash。

Shell脚本:Shell脚本是由一系列命令组成的文件,脚本可以运行一连串命令,达到自动化目的。

Shell脚本基础语法

创建并执行脚本
# 创建一个脚本文件
touch my_script.sh
chmod +x my_script.sh   # 赋予执行权限

# 脚本文件内容
#!/bin/bash              # 指定脚本解释器为bash
echo "Hello, World!"     # 打印字符串

# 执行脚本
./my_script.sh
变量和常用运算符
# 定义变量(等号两边不能有空格)
name="Shell Scripting"

# 访问变量(前面需要加$)
echo "I am learning $name"

# 数字运算(使用expr)
num1=5
num2=3
sum=$(expr $num1 + $num2)
echo "The sum is $sum"
条件判断
# 数值比较
if [ $num1 -gt $num2 ]; then
    echo "$num1 is greater than $num2"
fi

# 字符串比较
str1="hello"
str2="world"
if [ "$str1" != "$str2" ]; then
    echo "$str1 is not equal to $str2"
fi
循环
# for 循环
for i in {1..5}; do
    echo "Loop $i"
done

# while 循环
count=1
while [ $count -le 5 ]; do
    echo "Count is $count"
    count=$(expr $count + 1)
done

常用Shell命令

  • 文件和目录管理lscdmkdirrmmvcp
  • 文本处理catechogrepsedawk
  • 进程管理pstopkill
  • 文件权限chmodchown

Shell脚本中的进阶技术

函数
# 定义函数
my_function() {
    echo "Hello from function"
}

# 调用函数
my_function
重定向和管道
# 将输出重定向到文件
echo "Hello" > output.txt  # 覆盖写入
echo "World" >> output.txt # 追加写入

# 使用管道传递命令输出
cat file.txt | grep "text"

实践小项目

批量重命名文件
#!/bin/bash
# 把目录中的所有txt文件重命名为file_前缀
for file in *.txt; do
    mv "$file" "file_$file"
done
监控磁盘使用情况
#!/bin/bash
# 检测根目录的磁盘使用情况
used=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $used -gt 80 ]; then
    echo "Warning: Disk usage is over 80%"
fi


http://www.kler.cn/a/379028.html

相关文章:

  • CloudCompare——基于连通性的点云分类【2024最新版】
  • C# 日志框架 NLog、log4net 和 Serilog对比
  • 深入理解 Spring Boot 中的 @PathVariable 注解
  • Python并发编程库:Asyncio的异步编程实战
  • [neo4j报错]py2neo.errors.ClientError: [Request.Invalid] Not Found解决方案
  • vue系列==vue路由
  • Golang | Leetcode Golang题解之第530题二叉搜索树的最小绝对差
  • QT中的定时器与计时器
  • vue的路由的两种模式 hash与history 详细讲解
  • python+pptx:(一)占位符、文本框、段落操作
  • 【python】OpenCV—findContours(4.5)
  • 【原创分享】JVM服务调优实战
  • Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件
  • selenium自动搭建
  • 数字化装配助力柔性制造与快速换型,驱动效率飞跃
  • chrome编辑替换js文件的图文教程
  • STL--哈希
  • BeanDefinition体系架构(待...)
  • 大数据挖掘和数据挖掘有什么不一样?
  • (C#面向初学者的 .NET 的生成 AI) 第 2 部分-什么是 AI 和 ML?
  • Nginx 实现动态封禁IP,详细教程来了
  • Linux特种文件系统--tmpfs文件系统
  • yarn : 无法加载文件,未对文件 进行数字签名。无法在当前系统上运行该脚本。
  • [Android]从FLAG_SECURE禁止截屏看surface
  • 雷电模拟器ls内部操作adb官方方法
  • VScode + PlatformIO 了解