『Linux』Linux常见编程题

本文分享了Linux Shell编程中的常见题目及解答方案,包括变量运算、文件操作、权限设置等,适合准备期末考试的学生及希望提升Shell技能的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近Linux快期末考试了,自己也复习的差不多就顺便分享几个常见的编程题目

目录

1、编写shell脚本,将v1=1,v2=2相加,结果保存为V3并显示输出

#!/bin/bash
v1=1
v2=2
V3=$(($v1+$v2))
echo $V3

2、编写shell脚本,添加一个新组为 class1,然后添加属于这个组的30个用户,用户名的形式为 stdxx,其中xx从01到30

#!/bin/bash
#因为不知道class1组是不是存在,保险起见我就先删了再创建一个awa
groupdel calss1
groupadd class1 

for ((i=1;$i<=30;i++))
do
	if [ $i -le 9 ];then
		username=stu0$i
	else
		username=stu$i
	fi

	useradd $username
	usermod -g class1 $username
done

3、编写shell脚本,实现两个变量之间的加减乘除运算

#!/bin/bash
result=0
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
read -p "请输入运算符号:" c

if [ $c = "+" ];then
	result=$(($a+$b))
	echo " $a $c $b = $result "
elif [ $c ="-" ];then
	result=$(($a-$b))
	echo " $a $c $b = $result "
elif [ $c = "*" ];then
	result=$(($a*$b))
	echo " $a $c $b = $result "
elif [ $c = "/" ];then
	result=$(($a/$b))
	echo " $a $c $b = $result "
fi

4、编写shell脚本,在 /userdata目录下建立 50 个目录,即 user1 ~ user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行

#先判断,如果/userdata目录不存在就创建一个
if [ ! -e /userdata ];then
	mkdir /userdate
fi

for ((i=1;i<=50;i++))
do
	username=user$i
	mkdir -p /userdate/$username
	chmod 754 $username
done

5、编写shell脚本,计算1~100的和

#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
	sum=$(($sum+$i))
done
echo "$sum"

6、编写shell脚本,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下

#!/bin/bash
read fname
if [ -c $fname ];then #判断是否为字符设备文件用-c选项
	cp $fname /dev
fi

7、编写shell脚本,输入三个数并进行升序排序

#i/bin/bash
#三个数,两两比较一次就可以了
t=0
read a
read b
read c

if [ $a -gt $b ];then
	t=$a
	a=$b
	b=$t
fi

if [ $a -gt $c ];then
	t=$a
	a=$c
	c=$t
fi

if [ $b -gt $c ];then
	t=$b
	b=$c
	c=$t
fi

echo "$a $b $c"

8、编写shell脚本,输入一个数字n并计算1~n的和,同时要求如果输入的数字小于1,则重新输入,直到输入正确的数字为止

#!/bin/bash
sum=0
read “请输入一个数字:” n
While [ $n -lt 1 ]
do
	read “请输入一个数字:” n
done

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

echo$sum

9、编写shell脚本,把字符串反过来显示。例如:给定abcde输出edcba

#!/bin/bash
read -p “请输入字符:” char
echo $char|rev

10、编写shell脚本,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下

#首先编写备份文件的脚本fileback.sh
#!/bin/bash
if [ ! -e "/root/bak" ];then
	mkdir /root/bak
fi

cd /root/bak
yy=$(date +%Y)
mm=$(date +%m)
dd=$(date+%d)
name="$yy$mm$dd"_etc.tar.gz
tar -czvf $backupdir /etc

#然后编写任务定时器
crontab -e
0 0 1 * * /root/usr/bin/fileback.sh

11、某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:

(1)在下午4:50删除/abc目录下的全部子目录和全部文件

crontab -e
50 16 * * * rm -rf /abc

(2)从早800到下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内

0 8-18/1 * * * awk '{print $1}' /xyz/x1 >> /backup/bak01.txt

#由于前面经过crontab -e已经创建完任务定时处理文件了,所以就不再创建
#8-18/1中的斜杠就是在上午8点到下午6点之间每一小时进行操作的意思
#awk '{print $1}'就是打印/xyz/x1中的第一列(域)的内容
#然后>>是重定向操作,将前面打印的内容追加到/backup/bak01.txt中

(3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz

50 17 * * 1 tar -czvf backup.tar.gz /date

(4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc)

55 17 * * * umount /dev/hdc

(5)在早晨8:00前开机后启动

0 0-8 * * * reboot

最后,如果答案有误还请指正😀

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rainbow_Criss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值