当前位置: 首页 > 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与实时天气数据
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓
  • 外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的
  • 长三角多地重启游轮跨市游,“恢复苏杭夜航船”呼声又起
  • 印巴战火LIVE|巴基斯坦多地遭印度导弹袭击,巴总理称“有权作出适当回应”
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现2025年的5%左右增长目标
  • 娱见 | 为了撕番而脱粉,内娱粉丝为何如此在乎番位