shell实验

42 篇文章 0 订阅
  1. 使用for循环在/wenhs目录下通过随机10个字符加固定字符串wenhs批量创建10个html文件,结果类似qnvuxvicni_wenhs.html
#!/bin/bash
dir=/wenhs/
for ((i=1;i<=10;i++));do
	filename=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 10 |xargs)_wenhs.html
	if [ -d $dir ];then
		cd $dir && touch $filename
	else
	mkdir $dir && cd $dir && touch $filename
	fi
done

效果:
[root@wenhs5479 ~]# ls /wenhs/
7Ocr2n4FNh_wenhs.html  eWOxCCySgE_wenhs.html  wzmqqJ8vS8_wenhs.html
BFRXrBMn6N_wenhs.html  NEAof8Y8dN_wenhs.html  xLEbyL6ZDs_wenhs.html
E2VgHE1rwc_wenhs.html  Ulq9EZSxLX_wenhs.html
EcFzJip34y_wenhs.html  UMbdC4pusC_wenhs.html

  1. 将以上文件名中的wenhs全部改成weixinghao(用for循环实现),并且html改成大写
#!/bin/bash
dir=/wenhs
file=$(ls $dir)
for i in $file;do
	j=$(echo $i|cut -c 1-10)
	mv $dir/$j* $dir/${j}_weixinghao.HTML
done

效果:
[root@wenhs5479 ~]# ls /wenhs/
7Ocr2n4FNh_weixinghao.HTML  eWOxCCySgE_weixinghao.HTML  wzmqqJ8vS8_weixinghao.HTML
BFRXrBMn6N_weixinghao.HTML  NEAof8Y8dN_weixinghao.HTML  xLEbyL6ZDs_weixinghao.HTML
E2VgHE1rwc_weixinghao.HTML  Ulq9EZSxLX_weixinghao.HTML
EcFzJip34y_weixinghao.HTML  UMbdC4pusC_weixinghao.HTML
  1. 批量创建10个系统帐号wenhs01-wenhs10并设置密码(密码为随机8位字符串)
#!/bin/bash
for i in $(seq -w 10);do
useradd -r wenhs$i
echo "password$i" | md5sum |cut -c-8 | tee -a passwd.txt | passwd --stdin wenhs$i &>/dev/null
done
  1. 写一个脚本,实现判断实验主机当前网段中当前在线的IP有哪些
#!/bin/bash
subnet=192.168.42.0/24
netaddr=`echo $subnet|cut -d. -f1-3`
for i in {1..254};do
{
ping -c 1 -t 1 $netaddr.$i > /dev/null
if [ $? == 0 ];then
 echo $netaddr.$i
fi
} &
done
wait

效果:
[root@wenhs5479 ~]# bash nmap
192.168.42.129
192.168.42.87
192.168.42.81

  1. 打印My WeChat is wenhs5479, welcome to discuss together.中字母长度不大于6的单词
#!/bin/bash
len=6
words='My WeChat is wenhs5479, welcome to discuss together.'
for word in ${words[@]};do
l=$(echo $word|wc -c)
if [ $l -gt $len ];then echo $word;fi
done

效果:
[root@wenhs5479 ~]# bash print.sh
WeChat
wenhs5479,
welcome
discuss
together.
  1. 实现以脚本传参的方式比较2个整数大小,以屏幕输出的方式提醒用户比较结果
#!/bin/bash
max=$1
min=$2
[ $# -lt 2 ] && echo "请至少输入2个数字: " && exit
for i in $*;do
	echo "$i" |egrep '^[0-9]+$' &> /dev/null
	[ $? -ne 0 ] && echo "请输入2个整数,不是字母或特殊字符" && exit
	[ $max -le $i ] && max=$i
	[ $min -ge $i ] && min=$i
done
echo "$max > $min"

效果:
[root@wenhs5479 ~]# bash wenhs.sh 13123 53453
53453 > 13123
  1. 实现以read读入的方式比较2个整数大小,以屏幕输出的方式提醒用户比较结果
#!/bin/bash
flag=true
while $flag;do
    read -p "请输入一个数字:" A
    echo $A |egrep '^[0-9]+$' &>/dev/null
    if [ $? -ne 0 ];then
        echo "请输入一个整数"
        continue
	else
		while $flag;do
			read -p "请输入一个数字:" B
			echo $B |egrep '^[0-9]+$' &>/dev/null
			if [ $? -ne 0 ];then
				echo "请输入一个整数"
				continue
			else
				flag=false
			fi
		done
	fi
done
if [ $A -gt $B ];then
	echo "$A > $B"
elif [ $A -eq $B ];then
	echo "$A = $B"
else
	echo "$A < $B"
fi

效果:
[root@wenhs5479 ~]# bash wenhs.sh
请输入一个数字:a
请输入一个整数
请输入一个数字:b
请输入一个整数
请输入一个数字:123
请输入一个数字:321
123 < 321
[root@wenhs5479 ~]# bash wenhs.sh
请输入一个数字:123  
请输入一个数字:123
123 = 123
[root@wenhs5479 ~]# bash wenhs.sh
请输入一个数字:321
请输入一个数字:123
321 > 123
[root@wenhs5479 ~]# 
实验目的 Linux操作系统shell是用户与系统内核沟通的介,它为用户使用操作系统的服务提供了一个命令界面。用户在shell提示符($或#)下输入的每一个命令都由shell先解释,然后传给内核执行。本实验要求用C语言编写一个简单的shell程序,希望达到以下目的:  用C语言编写清晰易读、设计优良的程序,并附有详细的文档。  熟悉使用Linux下的软件开发工具,例如gcc、gdb和make。  在编写系统应用程序时熟练使用man帮助手册。  学习使用POSIX/UNIX系统调用、对进程进行管理和完成进程之间的通信,例如使用信号和管道进行进程间通信。  理解并发程序的同步问题。  锻炼在团队成员之间的交流与合作能力。 2. 实验要求 1. ysh解释程序的重要特征 本实验实现一个简单的命令解释器,也就是Linuxshell程序。实验程序起名为ysh,要求其设计类似于目前流行的shell解释程序,如bash、csh、tcsh,但不需要具备那么复杂的功能。ysh程序应当具有如下一些重要的特征:  能够执行外部程序命令,命令可以带参数。 . 。  能够执行fg、bg、cd、history、exit等内部命令。  使用管道和输入输出重定向。  支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前台/后台状态,以及控制作业的挂起、止和继续运行。 除此之外,在这个实验还须做到:  使用make工具建立工程。  使用调试器gdb来调试程序。  提供清晰、详细的设计文档和解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值