自学内容网 自学内容网

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

 

 

 


原文地址:https://blog.csdn.net/2201_75294631/article/details/146446279

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!