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

SHELL练习01

判断一个数是奇数还是偶数

要求:
编写一个 Shell 脚本,用户输入一个整数,判断该数是奇数还是偶数,并输出结果。

[root@node test01]# touch Determine parity.sh
[root@node test01]# vim Determine parity.sh 
还有 2 个文件等待编辑
#!/bin/bashread -p "请输入一个整数: " numif ((num % 2 == 0)); thenecho "$num 是偶数"
elseecho "$num 是奇数"
fi[root@node test01]# chmod a+rx Determine parity.sh 
[root@node test01]# ./Determine parity.sh 
请输入一个整数: 7
7 是奇数

read -p 读取用户输入,并将其存入变量 num 

((num % 2 == 0)) 用于判断 num 是否能被 2 整除,若能整除,则是偶数,否则是奇数

计算 1 到 N 的累加和

要求:
编写一个 Shell 脚本,用户输入一个正整数 N,计算 1+2+...+N 的累加和,并输出结果。

#!/bin/bashread -p "请输入一个正整数 N: " N
sum=0for ((i=1; i<=N; i++))
dosum=$((sum + i))
doneecho "1 到 $N 的累加和是: $sum"

sum=$((sum + i)) 进行累加运算 

统计一个文件中某个单词出现的次数

要求:
编写一个 Shell 脚本,用户输入文件名和要查找的单词,统计该单词在文件中的出现次数。

#!/bin/bashread -p "请输入文件名: " filename
read -p "请输入要查找的单词: " wordif [[ ! -f "$filename" ]]; thenecho "文件 $filename 不存在!"exit 1
ficount=$(grep -o -w "$word" "$filename" | wc -l)
echo "单词 '$word' 在文件 '$filename' 中出现了 $count 次"

-o 只匹配目标单词,不匹配整行 

-w 确保匹配完整单词,而不是单词的子串

wc -l 计算匹配的行数,即单词出现的次数。

批量重命名文件

要求:
编写一个 Shell 脚本,将当前目录下所有 .txt 文件的扩展名改为 .bak

#!/bin/bashfor file in *.txt
doif [[ -f "$file" ]]; thenmv "$file" "${file%.txt}.bak"fi
doneecho "所有 .txt 文件已重命名为 .bak"

for file in *.txt 遍历所有 .txt 文件。

if [[ -f "$file" ]] 确保 file 是普通文件,而不是目录或其他类型的文件 

mv "$file" "${file%.txt}.bak"

${file%.txt} 去掉 .txt 后缀   .bak 作为新的后缀名

批量创建用户并设置密码为 123

要求:
编写一个 Shell 脚本,批量创建用户&user并设置密码为 123

#!/bin/bashinput_file="users.txt"if [[ ! -f "$input_file" ]]; thenecho "用户列表文件不存在!"exit 1
fiwhile read -r user; doif id "$user" &>/dev/null; thenecho "用户 $user 已存在,跳过"elseuseradd "$user"echo "$user:123" | chpasswdecho "用户 $user 创建成功,密码已设置为 123"fi
done < "$input_file"

[[ ! -f "$input_file" ]]:如果 users.txt 文件不存在,则输出错误信息并退出脚本 

id "$user":查询系统中是否存在该用户 

&>/dev/null:如果用户存在,屏蔽命令的标准输出和错误输出,防止屏幕上显示不必要的信息。 

创建用户列表文件 users.txt

echo -e "user1\nuser2\nuser3" > users.txt

运行脚本 

chmod +x batch_create_users.sh
./batch_create_users.sh

验证

cat /etc/passwd | grep "user"
su - user1

 

 

 

相关文章:

SHELL练习01

判断一个数是奇数还是偶数 要求&#xff1a; 编写一个 Shell 脚本&#xff0c;用户输入一个整数&#xff0c;判断该数是奇数还是偶数&#xff0c;并输出结果。 [rootnode test01]# touch Determine parity.sh [rootnode test01]# vim Determine parity.sh 还有 2 个文件等待…...

PRODIGY: “不折腾人”的蛋白-蛋白/蛋白-小分子结合能计算工具

PRODIGY&#xff08;全称为 PROtein binDIng enerGY prediction&#xff09;是一种蛋白质结合能预测工具&#xff0c;可利用蛋白质-蛋白质复合物的三维结构来预测其结合亲和力。PRODIGY 利用一种高效的基于接触的方法&#xff0c;在估计结合自由能和解离常数的同时&#xff0c;…...

C++之 【模板初阶(函数模板与类模板)】

目录 1.泛型编程 2.模板 3函数模板 3.1函数模板的概念 3.2函数模板的格式 3.3函数模板的原理 3.4函数模板的实例化 3.4.1隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 3.4.2显示实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 3.…...

博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解

博弈论中的均衡精炼&#xff1a;完美贝叶斯均衡、序贯均衡与颤抖手均衡详解 1. 引言&#xff1a;为什么需要均衡精炼&#xff1f; 在博弈论中&#xff0c;纳什均衡是分析策略互动的核心工具&#xff0c;但其存在一个显著缺陷&#xff1a;无法排除不合理的均衡。例如&#xff0…...

在线教育网站项目第四步:deepseek骗我, WSL2不能创建两个独立的Ubuntu,但我们能实现实例互访及外部访问

一、说明 上一章折腾了半天&#xff0c;搞出不少问题&#xff0c;今天我们在deepseek的帮助下&#xff0c;完成多个独立ubuntu24.04实例的安装&#xff0c;并完成固定ip&#xff0c;实践证明&#xff0c;deepseek不靠谱&#xff0c;浪费我2个小时时间&#xff0c;我们将在下面实…...

在刀刃上发力:如何精准把握计划关键节点

关键路径分析是项目管理中的一种重要方法&#xff0c;它通过在甘特图中识别出项目中最长、最关键的路径&#xff0c;来确定项目的最短完成时间。 关键路径上的任务都是项目成功的关键因素&#xff0c;任何延误都可能导致整个项目的延期。关键路径分析对于项目管理者来说至关重要…...

组合总和||

1.给定一个数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 #include <bits/stdc.h> using namespace std; vector<vector<int>> result; vec…...

OpenCV图像拼接(2)基于羽化(feathering)技术的图像融合算法拼接类cv::detail::FeatherBlender

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::FeatherBlender 是 OpenCV 中用于图像拼接的一个类&#xff0c;它属于 stitching 模块的一部分。这个类实现了基于羽化&#xff08;…...

MediaPipe软件包如何构建和安装

MediaPipe 是一个由 Google 开发的多媒体机器学习框架&#xff0c;支持多种平台&#xff08;如 Android、iOS、桌面等&#xff09;。以下是构建和安装 MediaPipe 的步骤&#xff1a; 1. 环境准备 确保系统满足以下要求&#xff1a; 操作系统: Ubuntu (推荐 18.04 或 20.04)、…...

分享下web3j 常见用法

转账 fun sendEthTransaction(privateKey: String,toAddress: String,amount: BigDecimal) {//chainIdval chainId:Long 1//url 可以从https://chainlist.org/里面获取可用节点//eth转账&#xff0c;bnb同理&#xff0c;但需发送到bnb对应节点val url "https://xxx"…...

连接chatgpt的桌面语音助手

要创建一个连接到 ChatGPT 的桌面语音助手&#xff0c;可以使用 Python 编写一个程序来实现语音识别、与 ChatGPT API 交互以及语音合成的功能。以下是一个完整的解决方案和技术实现步骤&#xff1a; 所需工具和库 语音识别 使用 speech_recognition 库捕获用户的语音输入。需要…...

systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 笔记250322

systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 以下是 systemctl restart、systemctl reload 和 systemctl daemon-reload 的对比总结&#xff1a; 命令作用对象行为适用场景对服务的影响systemctl restart 服务名具体服务强制停止服务&#xff0c…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

spring boot 登入权限RBAC模式

首先准备好5张表 user_info表&#xff0c;用户的信息表 role表&#xff0c;角色表&#xff08;比如超级管理员、管理员、审核员、采购......&#xff09; 创建user_role表&#xff0c;user_info表&#xff0c;role表的中间表 注意了&#xff0c;role_id和user_id是 u…...

调用API拿到的值——存储方式

1.响应结果示例&#xff1a; "purposeTagList":["稳中向好及进中提质"] 2.数据库中定义的 3.值的获取&#xff1a; F1 JsonNode purposeTagListNode dataNode.path("purposeTagList");if (purposeTagListNode.isArray()) {StringBuilder purp…...

【用 Trace读源码】PlanAgent 执行流程

前提条件 在 Trae 中打开 OpenManus 工程&#xff0c;使用 build 模式&#xff0c;模型选择 claude-sonnet-3.7 提示词 分析 agent/planning.py 中 main 方法及相关类的执行流程&#xff0c;以流程图的方式展示PlanningAgent 执行流程图 以下流程图展示了 PlanningAgent 类…...

第一讲 | 解锁C++编程能力:基础语法解析

C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题&#xff0c;普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…...

LeetCode 热题 100_划分字母区间(80_763_中等_C++)(贪心算法(求并集))

LeetCode 热题 100_划分字母区间&#xff08;80_763&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;贪心算法(求交集)&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;贪心算法(求…...

C++ --- 多态

1 多态的概念 多态(polymorphism)的概念&#xff1a;通俗来说&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运⾏时多 态(动态多态)&#xff0c;这⾥我们重点讲运⾏时多态&#xff0c;编译时多态(静态多态)和运⾏时多态(动态多态)。编译时 多态(静态多态)主要就是我…...

HAL库中使用空闲中断+DMA接收数据,接收失败的问题

问题&#xff1a; 串口屏与单片机通过串口&#xff08;USART1&#xff09;进行通信&#xff0c;调试时发现问题&#xff0c;现象如下&#xff1a; 手动页面的几个文本&#xff0c;输入的数字不会显示出来&#xff0c;比如初始值为0&#xff0c;输入200&#xff0c;200会一闪而…...

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...

【Scrapy】Scrapy教程8——处理子链接

通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。 生成新请求 首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子…...

使用pycel将Excel移植到Python

1.适用需求 有些工作可能长期适用excel来进行公式计算&#xff0c;当需要把工作流程转换为可视化界面时&#xff0c;开发人员不懂专业逻辑&#xff0c;手动摸索公式很大可能出错&#xff0c;而且费时费力 2.可用工具及缺点 pandas 方便进行数据处理&#xff0c;支持各种格…...

学习应用层

应用层概述 客户/服务器方式&#xff08;C/S&#xff09;和对等方式&#xff08;P2P&#xff09; 动态主机配置协议DHCP 客户/服务器方式 DHCP报文会被封装成为UDP用户数据报&#xff0c;DHCP服务器端口号是UDP67&#xff0c;用户是UDP68。 广播发送&#xff0c;是因为并不知道…...

Doris官网上没有的一些Fe参数了,都在源码中

一、FE配置源码 apache-doris-src\fe\fe-common\src\main\java\org\apache\doris\common\Config.java 二、BE配置源码 apache-doris-src\be\src\common\config.cpp 三、FE源码 package org.apache.doris.common;public class Config extends ConfigBase {ConfField(descri…...

蓝桥杯算法精讲:二分查找实战与变种解析

适合人群&#xff1a;蓝桥杯备考生 | 算法竞赛入门者 | 二分查找进阶学习者 目录 一、二分查找核心要点 1. 算法思想 2. 适用条件 3. 算法模板 二、蓝桥杯真题实战 例题1&#xff1a;分巧克力&#xff08;蓝桥杯2017省赛&#xff09; 例题2&#xff1a;砍竹子&#xff0…...

C++脚本化方案调研

1 什么是脚本化 脚本化&#xff08;Scripting&#xff09;是指将脚本语言嵌入到主程序&#xff08;C等编译型语言&#xff09;中&#xff0c;通过以下方式扩展程序能力&#xff1a; 动态逻辑控制&#xff1a;通过脚本实现运行时逻辑调整&#xff0c;无需重新编译主程序&#x…...

蓝桥杯(N皇后问题)------回溯法

题目描述 在 NN 的方格棋盘放置了 N 个皇后&#xff0c;使得它们不相互攻击&#xff08;即任意 2 个皇后不允许处在同一排&#xff0c;同一列&#xff0c;也不允许处在与棋盘边框成 45 角的斜线上。你的任务是&#xff0c;对于给定的 N&#xff0c;求出有多少种合法的放置方法…...

再探C语言(1)

温馨提示&#xff1a; 学C语言就像玩《掘地求升》——你以为懂了语法就能通关&#xff1f; 不&#xff01;编译器会用铁锤教你做人&#xff01;(╯‵□′)╯︵┻━┻ &#x1f431;Part 1&#xff1a;sizeofの跨平台迷惑行为 Q1. 不同环境下sizeof(int)的结果 运行环境结果&a…...

高项第十三章——项目资源管理

什么是资源管理&#xff1f;项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程。 本过程关注两类资源&#xff1a;实物资源包括设备、材料、设施和基础设施 团队资源或人员指的是团队的人力资源 13_1 项目资源管理基础 项目团队是执行项目工作&#xff0c…...