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

SHELL练习01

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

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

[root@node test01]# touch Determine parity.sh
[root@node test01]# vim Determine parity.sh 
还有 2 个文件等待编辑
#!/bin/bash

read -p "请输入一个整数: " num

if ((num % 2 == 0)); then
    echo "$num 是偶数"
else
    echo "$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/bash

read -p "请输入一个正整数 N: " N
sum=0

for ((i=1; i<=N; i++))
do
    sum=$((sum + i))
done

echo "1 到 $N 的累加和是: $sum"

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

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

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

#!/bin/bash

read -p "请输入文件名: " filename
read -p "请输入要查找的单词: " word

if [[ ! -f "$filename" ]]; then
    echo "文件 $filename 不存在!"
    exit 1
fi

count=$(grep -o -w "$word" "$filename" | wc -l)
echo "单词 '$word' 在文件 '$filename' 中出现了 $count 次"

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

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

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

批量重命名文件

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

#!/bin/bash

for file in *.txt
do
    if [[ -f "$file" ]]; then
        mv "$file" "${file%.txt}.bak"
    fi
done

echo "所有 .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/bash

input_file="users.txt"

if [[ ! -f "$input_file" ]]; then
    echo "用户列表文件不存在!"
    exit 1
fi

while read -r user; do
    if id "$user" &>/dev/null; then
        echo "用户 $user 已存在,跳过"
    else
        useradd "$user"
        echo "$user:123" | chpasswd
        echo "用户 $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

 

 

 

相关文章:

  • Resume全栈项目(.NET)
  • Servlet、HttpServletRequest、HttpServletResponse、静态与动态网页、jsp、重定向与转发
  • 旋转编码器
  • 医学交互作用分析步骤和目的(R语言)
  • @Validated 使用介绍
  • Android开源库——Glide
  • Java主流开发框架之请求响应常用注释
  • 【LeetCode】大厂面试算法真题回忆(36)--相同数字的积木游戏
  • FFmpeg + ‌Qt‌ 简单视频播放器代码
  • 【算法笔记】图论基础(一):建图、存图、树和图的遍历、拓扑排序、最小生成树
  • 如何在 Bash 中不依赖 curl 或 wget 发出 HTTP 请求并实现文件传输——/dev/tcp的妙用
  • illustrate:一款蛋白/核酸结构快速渲染为“卡通风格”的小工具
  • Ciura序列
  • 弱网测试:全链路实战、高阶策略与自动化落地
  • 多线程14(哈希表与文件操作IO)
  • CPU架构和微架构
  • 中颖SH366000介绍和使用全解
  • Web安全策略CSP详解与实践
  • HTTP请求过程详解
  • 构建自定义MCP天气服务器:集成Claude for Desktop与实时天气数据
  • 企业取消“大小周”引热议,半月谈:不能将显性加班变为隐性加班
  • 日月谭天丨赖清德强推“脱中入北”是把台湾带向死路
  • 第二艘国产大型邮轮实现坞内起浮,重点强化邮轮供应链本土化建设
  • 上海超万套保租房供应高校毕业生,各项目免押、打折等优惠频出
  • 孟泽:我们简化了历史,因此也简化了人性
  • 我驻阿巴斯总领馆:将持续跟踪港口爆炸事件进展,全力确保中方人员安全