您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > linux-shell脚本编程练习作业及答案(全)
本人乃一介草民,刚学shell编程不久,一日见有人发题求助,所以自己也当作练习来练练手,写的不好请勿吐槽,可与本人交流,一起学习!!(1)创建用户批量创建1000个用户用户名为:班级+学号+昵称;每个班为一个组群能够自动删除所创建的用户每成功创建或删除一个用户,在屏幕上显示用户名(题目中这用户,也太tm多了点,没有达到题目的全部要求,还是水平有限啊!!)#!/bin/bash#thisisprogrametobuildusersbatchechohowmanyusersyouwanttoaddread-pinputthenumbersofusers:numcount=1while[$count-le$num]douseradd-Gclass1std$countechouserstd$countdelsuccessfullycount=$(($count+1))doneread-pwhatdoyouwanttodo:doletcount=count-1case$doind)for((count;count=1;count--))douserdel-rstd$countechouserstd$countdelsuccessfullydone;;*)exit;;esac##################################################(2)创建目录和文件,目录名为:dir1,dir2,…,dir10每个目录下分别新建10个文本文件,文件名为:目录名+file1~10并设置每个文件的权限:文件所有者:读+写+执行同组用户:读+执行其他用户:读+执行等待键盘输入一个数字,范围为1~10重命名该级目录(假设输入数字为“5”,则为“dir5”目录)下所有文件的扩展名为bak,并将该目录下所有文件名保存到一个文本文件删除包含该数字的所有目录和文件#!/bin/bash#test2for((i=1;i=10;i++))domkdir/root/tmp/dir$icd/root/tmp/dir$ichmod755-R.#这有个(.)代表当前文件夹a=1while[$a-le10]dotouchdir${i}file$aleta=a+1donedoneread-pwhichdirectoryyouwantchage:numcd/root/tmp/dir$numforsin`ls/root/tmp/dir$num`domv$s$s.bakdonels/root/tmp/dir$num../outrm-rf/root/tmp/*${num}*##################################################(3)备份文件l每天18:00归档/etc目录下的所有文件,归档文件名为如下形式:etc-YYYY-MM-DD;保存在/home/user/backup目录下,其中user为当前登录用户名需要编写一个脚本,放到/etc/cron.d/script:viscript#!/bin/bashDATE=`date+%F`tar-cvf/etc-$DATE/etcmkdir/home/$USER/backupmv/etc-$DATE/home/$USER/backup#结束,保存chmod+xscriptcrontab-e0018***/etc/cron.d/script##################################################同上差不多l每天8:00压缩/etc目录下的所有内容,压缩文件名为如下形式:etc-YYYY-MM-DD;存放在/home/user/tar目录下,其中user为当前登录用户名l每周日17:00归档/home下每个目录,归档文件名为如下形式:dir-YYYY-MM-DD;保存在/tmp/YYYYMMDD目录下##################################################(4)查找统计l查看/etc/passwd中所有包含字符串“aa”的用户,并将结果保存在文本文件中grepaa.*/etc/passwd|cut-d:-f1filel查看/bin中包含字符串“ls”的文件名,并将结果保存在文本文件中ls/bin|grepls.*filel把/bin和/sbin下的文件名保存到文件commandview中ls/bin/sbincommandviewl统计/bin和/sbin下的文件数量ls/bin|wc-lls/sbin|wc-l##################################################真心不会只知道pstop(5)进程管理l显示系统正在运行的所有进程l显示当前终端正在运行的所有进程应该是:ps-Hl显示root正在运行的所有进程l以优先级-16后台启动一个进程“find/-namels*tmp&”l显示该进程信息ps-ef|grepfindl修改该进程的优先级renicel杀掉该进程killid##################################################(6)系统信息显示当前登录的用户名whoami显示系统中所有用户名cut-d:-f1/etc/passwd显示本机名hostname显示本机操作系统的名称、版本cat/etc/issue显示文件系统信息df-h显示当前系统状态信息##################################################(7)加减乘除运算,其中l两个操作数和一个运算符由位置参数给出l在屏幕上分别显示操作数、运算符和运算结果#!/bin/bash#test7read-pinputfirstnum:var1read-pinput+-*/:varread-pinputsecondnum:var2v=`echoscale=2;$var1$var$var2|bc`echo$var1$var$var2=$v##################################################(8)按照运行结果编写Shell程序:0101210123210123432101234543210123456543210123456765432101234567876543210123456789876543210123456789#!/bin/bash#test8i=0for((i;i=9;i++))doj=$ifor((i;i=0;i--))doecho-n$idonea=1while[$a-le$j]doecho-n$aleta=a+1doneechoi=$jdone##################################################(9)逆序输出一个字符串#!/bin/bash#test9read-pinputchars:charrev$char##################################################(10)冒泡法对10个数按升序排序#!/bin/bash#test10冒泡法输出i=0formin$@doa[i]=$mleti=i+1done#$#随意多个位置参数都可以进行排序,具体到n个参数,则改为nfor((i=0;i=$#;i++))dofor((j=1+i;j=$#;j++))doif[[${a[i]}-gt${a[j]}]]thent=${a[i]}a[$i]=${a[j]}a[$j]=$tfidonedoneecho${a[@]}#不换行输出#如果要换行输出用下面语句:forkin${a[@]}doecho$kdone~##################################################(11)编写1个menu的Shell程序,执行后的界面为:NumberNameForLinuxMenu1exitleave2vieditafile3datedate4calcalendar5wholisttheusers6lslistthefilesinthisdirectory7catdisplayafileonthescreenPleaseinputanumberoranamefortheactionyouwish:(有点差异,绞尽脑汁也不知道怎么改的跟上面一样:)echoNumberNameForLinuxMenuselectvarinexitleavevieditafiledatedatecalcalendarwholisttheuserlslistthefilesinthisdirectorycatdisplayafileonthescreendobreakdoneechopleaseinputanumberoranamefortheactionyouwish:echoyourchooseis$var##################################################(12)求n的阶乘,n=100方法1:#!/bin/basha=1for((i=1;i=100;i++))doa=$[$i*$a]doneecho100!=$a#我的电脑100!输不出来,可能是出题目的有点脑残,考算法直接用10就可以嘛!!方法2(递归)(可以求任意数的阶乘,但是。。100!还是输不出啊):functionfunc{if[$1-eq1];thenecho1elselocali=$[$1-1]localj=`func$i`a=`echoscale=3;$1*$j|bc`echo$afi}read-pinputanum:mn=`func$m`echo$m!=$n
本文标题:linux-shell脚本编程练习作业及答案(全)
链接地址:https://www.777doc.com/doc-5290007 .html