Shell_编程题
shell脚本程序基础练习1
1、编写shell脚本程序,从命令行读取三个位置参数的值,计算其乘积及平均值,并将结果输出。
2、编写shell脚本程序,计算梯形面积并输出结果,其中上底、下底的值从键盘输入,高是在终端命令行定义的全局变量。
3、编写shell脚本程序,从命令行输入一个任意的字符串变量,将该字符串添加到字符串“123abc”的‘3’和‘a’之间,然后把改变后的字符串写入到当前目录下的文件file 中,并查看file的内容。
4、编写shell脚本程序,使用管道命令统计文件/etc/services和/etc/ucf.conf中包含字符串“the”的地方共有多少行,将相加后的结果输出到命令行。
5、编写shell脚本程序,在不打开文件的前提下自动修改3题中file的内容,在abc后追加字符串,该字符串从键盘输入,要求追加字符串紧跟abc,不换行/*************1************** /***********2***********#!/bin/bash #!/bin/bashecho 这三个数的乘积是:echo 请输入梯形的上底和下底:expr $1 \* $2 \* $3 read a becho 这三个数的平均值是:echo 这个梯形的面积为:echo $[($1+$2+$3)/3] echo $[($a+$b)*g/2]/***********3************ /************4***********#!/bin/bash #!/bin/bashecho 请输入一个字符串:let a=$( grep the /etc/services | wc -l )read c echo $aecho "123${c}abc" > file let b=$(grep the /etc/ucf.conf | wc -l )cat file echo $becho "这两个数相加的结果为:$[$a+$b]"/*********5*************#!/bin/bashecho 请输入需要添加到file文件中的字符串:read cread s < fileecho $s$c > filecat file。
linuxshell脚本编程练习作业及答案(全)
linuxshell脚本编程练习作业及答案(全)本人乃一介草民,刚学shell编程不久,一日见有人发题求助,所以自己也当作练习来练练手,写的不好请勿吐槽,可与本人交流,一起学习!!(1)创建用户批量创建1000个用户用户名为:班级+学号+昵称;每个班为一个组群能够自动删除所创建的用户每成功创建或删除一个用户,在屏幕上显示用户名(题目中这用户,也太tm多了点,没有达到题目的全部要求,还是水平有限啊!!)#!/bin/bash#this is programe to build users batchecho "how many users you want to add"read -p "input the numbers of users: " numcount=1while [ $count -le $num ]douseradd -G class1 std$countecho "user std$count del successfully"count=$(($count + 1))doneread -p "what do you want to do: " dolet count=count-1case $do ind)for(( count; count >= 1;count-- ))douserdel -r std$countecho "user std$count del successfully"done;;*) exit;;esac############################################# #####(2)创建目录和文件,目录名为:dir1, dir2, …, dir10每个目录下分别新建10个文本文件,文件名为:目录名+file1~10并设置每个文件的权限:文件所有者:读+写+执行同组用户:读+执行其他用户:读+执行等待键盘输入一个数字,范围为1~10重命名该级目录(假设输入数字为“5”,则为“dir5”目录)下所有文件的扩展名为bak,并将该目录下所有文件名保存到一个文本文件删除包含该数字的所有目录和文件#!/bin/bash#test 2for((i=1;i<=10;i++))domkdir /root/tmp/dir$icd /root/tmp/dir$ichmod 755 -R . #这有个(.)代表当前文件夹a=1while [ $a -le 10 ]dotouch dir${i}file$alet a=a+1donedoneread -p "which directory you want chage:" numcd /root/tmp/dir$numfor s in `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 :vi script#!/bin/bashDATE=`date +%F`tar -cvf /etc-$DATE /etcmkdir /home/$USER/backupmv /etc-$DATE /home/$USER/backup#结束,保存chmod +x scriptcrontab -e00 18 * * * /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”的用户,并将结果保存在文本文件中grep "aa.*" /etc/passwd|cut -d: -f1 >filel 查看/bin中包含字符串“ls”的文件名,并将结果保存在文本文件中ls /bin|grep "ls.*" >filel 把/bin和/sbin下的文件名保存到文件commandview中ls /bin /sbin >commandviewl 统计/bin和/sbin下的文件数量ls /bin |wc -lls /sbin|wc -l############################################# #####真心不会只知道ps top(5)进程管理l 显示系统正在运行的所有进程l 显示当前终端正在运行的所有进程应该是: ps -Hl 显示root正在运行的所有进程l 以优先级-16后台启动一个进程“find / -name ls* > tmp &”l 显示该进程信息ps -ef |grep findl 修改该进程的优先级renicel 杀掉该进程kill id############################################# #####(6)系统信息显示当前登录的用户名whoami显示系统中所有用户名cut -d ":" -f1 /etc/passwd显示本机名hostname显示本机操作系统的名称、版本cat /etc/issue显示文件系统信息df -h显示当前系统状态信息############################################# #####(7)加减乘除运算,其中l 两个操作数和一个运算符由位置参数给出l 在屏幕上分别显示操作数、运算符和运算结果#!/bin/bash#test 7read -p "input first num: " var1read -p "input +-*/ : " varread -p "input second num: " var2v=`echo "scale=2; $var1 $var $var2 "|bc`echo "$var1 $var $var2 = $v"############################################# #####(8)按照运行结果编写Shell程序:101210123210123432101234543210123456543210123456765432101234567876543210123456789876543210123456789#!/bin/bash#test 8i=0for(( i; i <= 9; i++ ))doj=$ifor(( i; i >= 0; i-- ))doecho -n "$i"donea=1while [ $a -le $j ]doecho -n "$a"let a=a+1doneecho " "i=$jdone############################################# #####(9)逆序输出一个字符串#!/bin/bash#test 9read -p "input chars : " charrev $char############################################# #####(10)冒泡法对10个数按升序排序#!/bin/bash#test 10 冒泡法输出i=0for m in "$@"doa[i]=$mdone# $#随意多个位置参数都可以进行排序,具体到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[@]}" #不换行输出#如果要换行输出用下面语句:for k in "${a[@]}"doecho $kdone~############################################# #####(11)编写1个menu的Shell程序,执行后的界面为:NumberNameFor Linux Menu2viedit a file3datedate4calcalendar5wholist the users6lslist the files in this directory7catdisplay a file on the screenPlease input a number or a name for the action you wish:(有点差异,绞尽脑汁也不知道怎么改的跟上面一样:)echo "NumberNameFor Linux Menu"select var in "exitleave" "viedit a file" "datedate" "calcalendar" "wholist the user" "lslist the files in this directory" "catdisplay a file on the screen"dobreakdoneecho "please input a number or a name for the action you wish:"echo "your choose is $var"############################################# #####(12)求n的阶乘,n=100方法1:#!/bin/basha=1for(( i=1; i <= 100; i++ ))doa=$[ $i * $a ]doneecho "100!=$a"#我的电脑100!输不出来,可能是出题目的有点脑残,考算法直接用10就可以嘛!!方法2(递归)(可以求任意数的阶乘,但是。
shell编程题
shell编程题Shell编程是Linux系统中非常重要的一部分,它能够帮助我们自动化执行各种命令和任务。
现在我将为大家介绍一个简单的Shell 编程题。
题目:编写一个Shell脚本,实现以下功能:1. 创建一个名为"mydir"的目录2. 在"mydir"目录中创建10个以数字命名的子目录,即1-103. 在每个子目录中创建一个空文件,文件名为子目录名+".txt",例如1.txt, 2.txt...4. 输出"mydir"目录下所有子目录名称和对应的文件数量解题思路:首先,我们需要使用mkdir命令来创建名为“mydir”的目录。
接着,可以使用一个循环来创建10个以数字命名的子目录,使用mkdir命令加上循环变量$i即可。
然后,我们再用一个循环在每个子目录中创建一个空文件。
同样,使用touch命令和循环变量$i即可。
最后,我们可以使用ls命令和grep命令来输出“mydir”目录下所有子目录名称和对应的文件数量。
具体实现方法如下:```#!/bin/bash#创建 mydir 目录mkdir mydir#循环创建 10 个数字命名的子目录for i in {1..10}domkdir mydir/$itouch mydir/$i/$i.txtdone#输出 mydir 目录下所有子目录名称和对应的文件数量ls -l mydir | grep "^d" | awk "{print $9}" | while read line donum=$(ls -l mydir/$line | grep "^-" | wc -l)echo "子目录 $line 中有 $num 个文件"done```以上便是一个简单的Shell编程题,希望对大家对Shell编程有所帮助。
5个实用的shell脚本面试题和答案
5个实⽤的shell脚本⾯试题和答案这边提到的5个⾯试问题,延续之前的有关Linux⾯试问题和答案。
如果你是Tecmint的读者,你的⽀持我⾮常感谢。
1. 写⼀个shell脚本来得到当前的⽇期,时间,⽤户名和当前⼯作⽬录。
答案 : 输出⽤户名,当前⽇期和时间,以及当前⼯作⽬录的命令就是logname,date,who i am和pwd。
现在,创建⼀个名为userstats.sh⽂件,将下⾯的代码添加到它。
复制代码代码如下:#!/bin/bashecho "Hello, $LOGNAME"echo "Current date is `date`"echo "User is `who i am`"echo "Current directory `pwd`"给它添加执⾏权限,并且执⾏他。
复制代码代码如下:# chmod 755 userstats.sh# ./userstats.sh样例输出复制代码代码如下:Hello, aviCurrent date is Sat Jun 7 13:05:29 IST 2014User is avi pts/0 2014-06-07 11:59 (:0)Current directory /home/avi/Desktop2.写⼀个shell脚本,进⾏两个数字的相加,如果没有输⼊参数就输出错误信息和⼀⾏使⽤说明答案 : 下⾯是简单的shell脚本以及描述,如果没有命令⾏参数,它会抛出错误与如何使⽤脚本的说明。
再创建⼀个名为twonumbers.sh⽂件和下⾯的内容添加到⽂件⾥。
复制代码代码如下:#!/bin/bash# The Shebangif [ $# -ne 2 ]# If two Inputs are not received from Standard Inputthen# then execute the below statementsecho "Usage - $0 x y"# print on standard output, how-to use the script (Usage - ./1.sh x y )echo " Where x and y are two nos for which I will print sum"# print on standard output, “Where x and y are two nos for which I will print sum ”exit 1# Leave shell in Error Stage and before the task was successfully carried out.fi# End of the if Statement.echo "Sum of $1 and $2 is `expr $1 + $2`"# If the above condition was false and user Entered two numbers as a command Line Argument,it will show the sum of the entered numbers.给他添加可执⾏权限,并且执⾏。
习题07_Shell编程
习题07_Shell编程一、单选1. 下面哪个命令是用来定义shell的全局变量( D )。
A. exportfsB. aliasC. exportsD. export2.在Shell脚本中,用来读取文件内各个域的内容并将其赋值Shell变量的命令是(D )。
A. foldB. joinC. trD. read3. 当字符串用双引号(’’)括起来时,SHELL将(C )。
A. 解释引号内的特殊字符B. 执行引号中的命令C. 不解释引号内的特殊字符D. 结束进程4. 以下哪个环境变量表示当前路径( B )。
A. PATHB. PWDC. HOMED. ROOT5. shell不仅是(用户命令的解释器),它同时也是一种功能强大的编程语言,(bash )是Linux的缺省shell。
6. 编写的Shell程序运行前必须赋予该脚本文件(执行)权限。
7. 对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用(shift )命令实现。
8. 为脚本程序指定执行权的命令及参数是(chmod a+x filename )。
9. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有(空格)。
10. 输入了Shell命令的部分字符后按( tab )键可补全其余部分。
11.改变命令提示符的环境变量是(PS1 )。
11. grep -E '[Hh]enr(y|ietta)' file的功能是:(在文件File中查找Henry、henry、Henrietta或henrietta)。
12. 如下为命令终端下的一个截图:则,以下两句的执行结果是:(the home path is $HOME )。
path=‘the home path is $HOME’echo $path13. 以下为程序名为prog的程序内容。
则sh prog a b c d的执行结果为( C )。
set A B C Dshiftshiftecho $1三、简答1. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。
shell编程例题
shell编程例题1. 创建一个名为"hello.sh"的shell脚本,该脚本在屏幕上输出"Hello, World!"。
```bash#!/bin/bashecho "Hello, World!"```2. 编写一个shell脚本,接受一个参数,并打印出该参数的平方。
```bash#!/bin/bashnum=$1square=$((num * num))echo "The square of $num is $square."```3. 编写一个shell脚本,计算1到10的和,并输出结果。
```bash#!/bin/bashsum=0for ((i=1; i<=10; i++))dosum=$((sum + i))doneecho "The sum of numbers from 1 to 10 is $sum."```4. 编写一个shell脚本,统计一个文本文件中特定单词出现的次数,并输出结果。
```bash#!/bin/bashword="example"count=0while IFS= read -r linedofor w in $linedoif [[ $w == $word ]]thencount=$((count + 1))fidonedone < file.txtecho "The word '$word' appears $count times in the file."```请注意,这些只是一些基本的shell编程例题,更复杂的问题可能需要更多的代码和逻辑来解决。
shell脚本编程基础面试题
shell脚本编程基础⾯试题⼀级标题shell脚本编程基础1、编写脚本/root/bin/systeminfo.sh,显⽰当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存⼤⼩,硬盘⼤⼩[root@magedu ~]# vim sysinfo.sh#!/bin/bashipv4=`ifconfig |egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"`echo "当前主机系统信息如下:"echo 主机名: `hostname`echo ipv4地址:"$ipv4"echo 操作系统版本: `cat /etc/redhat-release |cut -d. -f1-2`echo 内核版本: `uname -r`echo CPU型号: `lscpu |grep "Model name"|tail -1 |tr -s ' '|cut -d: -f2`echo 内存⼤⼩: `free -mh |head -2|tail -1|tr -s ' '|cut -d' ' -f2`echo 硬盘容量: `fdisk -l|head -2|tail -1|cut -d, -f1|cut -d' ' -f2-4`带颜⾊的版本。
2、编写脚本/root/bin/backup.sh,可实现每⽇将/etc/⽬录备份到/root/etcYYYY-mm-dd中[root@magedu ~]# vim /root/bin/backup.sh#!/bin/bashcp -a /etc/ /root/etc`date +%Y-%m-%d`echo "/etc⽬录备份完成"3、编写脚本/root/bin/disk.sh,显⽰当前硬盘分区中空间利⽤率最⼤的值[root@magedu ~]# vim /root/bin/disk.sh#!/bin/bashecho "当前硬盘分区中空间利⽤率最⼤的值: `df |grep /dev/sd |grep -o "[0-9]\{1,3\}%" |sort -rn|head -1`4、编写脚本/root/bin/links.sh,显⽰正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从⼤到⼩排序[root@magedu ~]# vim /root/bin/links.sh#!/bin/shecho "每个远程主机的IPv4地址和连接数:`netstat -tan |tr -s " " ":"|cut -d: -f6|grep ^[[:digit:]]|sort|uniq -c |sort -nr`"1、编写脚本sumid.sh,计算/etc/passwd⽂件中的第10个⽤户和第20⽤户的ID之和[root@magedu ~]# vim /root/bin/sumid.sh#!/bin/baship1=`cat /etc/passwd |head -10 | tail -1|cut -d: -f3`ip2=`cat /etc/passwd |head -20 | tail -1|cut -d: -f3`let sum=ip1+ip2echo $sum2、编写脚本sumspace.sh,传递两个⽂件路径作为参数给脚本,计算这两个⽂件中所有空⽩⾏之和##[root@magedu ~]# vim /root/bin/sumspace.sh#!/bin/shspace1=`cat $1 |grep "^$"|wc -l`space2=`cat $2 |grep "^$"|wc -l`let sum=space1+space2echo "两个⽂件中所有空⽩⾏之和:$sum"3、编写脚本sumfile.sh,统计/etc, /var, /usr⽬录中共有多少个⼀级⼦⽬录和⽂件[root@magedu ~]# vim /root/bin/sumfile.sh#!/bin/bashnumetc=ls -A /etc|wc -lnumvar=ls -A /var|wc -lnumusr=ls -A /usr|wc -llet sum=numetc+numvar+numusrecho $sum1、编写脚本argsnum.sh,接受⼀个⽂件路径作为参数;如果参数个数⼩于1,则提⽰⽤户“⾄少应该给⼀个参数”,并⽴即退出;如果参数个数不⼩于1,则显⽰第⼀个参数所指向的⽂件中的空⽩⾏数[root@magedu ~]# vim argsnum.sh#!/bin/bash[[ $# -lt 1 ]] && (echo "at least one argument"&&exit)|| echo `grep '^$' $1|wc -l`2、编写脚本hostping.sh,接受⼀个主机的IPv4地址做为参数,测试是否可连通。
Linux编程_Shell脚本练习题
Linux编程_Shell脚本练习题1,编写shell脚本,计算1~100的和。
#! /bin/bashsum=0for i in `seq1100`;dosum=$[$i+$sum]doneecho $sum2,编写shell脚本,输⼊⼀个数字n并计算1~n的和。
要求:如果输⼊的数字⼩于1,则重新输⼊,直到输⼊正确的数字为⽌。
#! /bin/bashread -p "input number:" nsum=0;for((i=0;i<=$n;i++))dosum=`expr $sum + $i`doneecho $sum3,编写shell脚本,批量建⽴⽤户user_00、user_er_99。
要求:所有⽤户同属于users组。
#! /bin/bashgroupadd usersfor i in `seq -w09uesradd -g users user_0$i4done4,编写shell脚本,批量添加⽤户 jsj01-jsj09、jsj10-jsj99。
#! /bin/bashfor((i=1;i<20;i++));doif(i<10);thenjsj="jsj0$i";elsejsj="jsj$i";fiuseradd $jsjdone5,编写shell脚本,要求实现如下功能:当执⾏⼀个程序的时候,这个程序会让使⽤者选择boy或者girl;如果使⽤者输⼊B或者b时,就显⽰:He is a boy;如果使⽤者输⼊G 或者g时,就显⽰:He is a girl;如果是除了B/b/G/g以外的其他字符,就显⽰:I don’t know。
#! /bin/bashecho -n your choice:read choicecase $choice ing)echo"She is a girl.";;G)echo"She is a girl.";;b)echo"He is a boy.";;B)echo"He is a boy.";;*)echo"I don't know.";;esac6,编写shell脚本,实现两个变量之间的加减乘除运算。
shell 笔试题
shell 笔试题以下是一些常见的Shell脚本笔试题,你可以参考这些题目来检验自己的Shell脚本编程能力。
写出创建一个空目录的Shell命令。
答案是:mkdir directory_name如何在一个文件中查找某一特定字符串?答案是:grep "string" file_name如何将两个字符串连接起来?答案是:使用加号+,例如:string1="Hello, " string2="World!" result=$string1$string2如何使用Shell脚本在多个文件中查找某一特定字符串?答案是:使用for循环和grep命令,例如:bash`for file in *; do grep "string" $file; done`如何将一个字符串中的所有单词首字母大写?答案是:使用tr命令和正则表达式,例如:bash`echo "hello world" | tr '[:lower:]' '[:upper:]' | sed 's/\b\(.\)/\u\1/g'`如何使用Shell脚本将一个文件中的所有行反向输出?答案是:使用tac命令,例如:tac file_name如何使用Shell脚本将一个文件中的所有行连接成一个字符串?答案是:使用cat命令和重定向,例如:cat file_name > output_file如何使用Shell脚本将一个文件中的所有行按行反向排序?答案是:使用sort命令和-r选项,例如:sort -r file_name如何使用Shell脚本将一个文件中的所有行按行反向排序并将结果输出到一个新文件中?答案是:使用sort命令、重定向和-o选项,例如:sort -r file_name > output_file。
shell编程题经典100例
shell编程题经典100例 1. 显示当前路径```shellpwd```2. 列出当前目录中的文件和目录```shellls```3. 创建一个新的目录```shellmkdir <目录名> ```4. 删除一个目录 ```shellrmdir <目录名> ```5. 删除一个文件 ```shellrm <文件名>```6. 复制一个文件```shellcp <源文件> <目标文件> ```7. 移动一个文件```shellmv <源文件> <目标文件> ```8. 重命名一个文件```shellmv <旧文件名> <新文件名> ```9. 创建一个符号链接```shellln -s <源文件> <符号链接> ```10. 显示一个文件的详细信息 ```shellls -l <文件名>```11. 显示一个目录的详细信息 ```shellls -ld <目录名>```12. 查找一个文件```shellfind <路径> -name <文件名> ```13. 搜索文本字符串```shellgrep <字符串> <文件>```14. 显示一个文件的指定行```shellhead -n <行数> <文件>```15. 显示一个文件的最后几行 ```shelltail -n <行数> <文件>```16. 比较两个文件```shelldiff <文件1> <文件2>```17. 合并两个文件```shellcat <文件1> <文件2> > <输出文件> ```18. 运行一个命令```shellcommand <参数>```19. 管道命令```shellcommand1 | command2```20. 重定向输出```shellcommand > <输出文件> ```21. 重定向输入```shellcommand < <输入文件> ```22. 使用环境变量```shellecho $PATH```23. 设置环境变量```shellPATH=/usr/bin:/bin export PATH```24. 创建一个脚本```shell#!/bin/bash# 脚本内容```25. 运行一个脚本 ```shell./<脚本名>```26. 调试一个脚本 ```shellbash -x <脚本名> ```27. 使用case语句 ```shellcase $1 in"start")# 执行启动命令;;"stop")# 执行停止命令;;esac```28. 使用if语句```shellif [ $1 -gt 10 ]; then# 执行条件为真的命令 else# 执行条件为假的命令 fi```29. 使用for循环```shellfor i in 1 2 3 4 5; do # 迭代执行命令done```30. 使用while循环```shellwhile [ $i -lt 10 ]; do # 循环执行命令i=$((i+1))done```31. 使用until循环```shelluntil [ $i -gt 10 ]; do # 循环执行命令i=$((i+1))done```32. 使用函数```shellfunction my_function() { # 函数体}my_function```33. 使用数组```shellarr=(1 2 3 4 5)echo ${arr[2]}```34. 使用字典```shelldeclare -A dictdict["name"]="John Doe" echo ${dict["name"]}```35. 使用正则表达式```shellif [[ $string =~ ^[[:alpha:]]+$ ]]; then # 匹配以字母开头的字符串fi```36. 使用管道符```shellls | grep "txt"```37. 使用换行符```shellecho -e "Line 1\nLine 2"```38. 使用引号```shellecho "This is a string with spaces"```39. 使用转义字符```shellecho "This is a string with a \n newline" ```40. 使用注释```shell# 这是一行注释```41. 使用条件?:```shellresult=$(if [ $condition ]; then echo "true"; else echo "false"; fi)```42. 使用切片```shellecho "${string:0:3}"```43. 使用join命令```shellecho $( IFS=","; echo "${array[]}" ) ```44. 使用read命令```shellread -p "Enter your name: " name```45. 使用变量赋值```shellvar=$(expr 1 + 2)```46. 使用算术运算```shell(( i++ ))```47. 使用逻辑运算符```shellif [[ $condition1 && $condition2 ]]; then # 条件 1 和条件 2 都为真fi48. 使用比较运算符```shellif [[ $var -gt 10 ]]; then # var 大于 10fi```49. 使用测试命令```shellif test -f <文件>; then# 文件存在```50. 使用getopts解析命令行参数 ```shellwhile getopts ":ab:" opt; do case $opt ina)flag_a=true;;b)arg_b=$OPTARG;; esac done```。
shell 笔试题
shell 笔试题1、SHELL脚本test.sh权限为644,脚本没有执行权限的时候怎么执行test.sh脚本() [单选题] *A sh test.sh(正确答案)B python test.shC exec test.shD ./test.sh2、SHELL脚本中$0代表什么() [单选题] *A 脚本传递的所有参数B 脚本名(正确答案)C 脚本第一个参数D 脚本参数个数3、如下条件判断语句,输出内容为()name="zhangsan"if [ "$name" == "Xzhangsan" ];thenecho "true"elseecho "false"fi [单选题] *A trueB false(正确答案)4、文件表达式中,-x是什么权限() [单选题] *A 读权限B 写权限C 执行权限(正确答案)D 是否为目录5、while死循环中如何跳出当前循环() [单选题] *A continueB selectC break(正确答案)D goto6、read -s -t 30 -p命令中-s参数的含义是() [单选题] *A 静默输出(正确答案)B DEBUG模式输出C 结合-t参数,休眠7、SHELL脚本中如何执行函数() [单选题] *A sh 函数名B 函数名(正确答案)C function 函数名D ./函数名8、SHELL脚本函数如何返回字符串() [单选题] *A return 字符串B echo 字符串(正确答案)C print 字符串D printf 字符串9、SHELL脚本中单引号可以识别变量() [判断题] *对错(正确答案)10、SHELL脚本中函数return不可以返回字符串() [判断题] *对(正确答案)错11、SHELL脚本中continue指令是跳出本次循环进入下一次循环() [判断题] *对(正确答案)错12、SHELL脚本中双引号不能识别变量() [判断题] *对错(正确答案)13、SHELL脚本中反撇``和$()中都可以执行命令() [判断题] *对(正确答案)错。
实验 shell程序编写的亲测答案
done
编写一个shell脚本,打印任何数的乘法表。
如:
输入一个数2
打印:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
…..
2 * 10 = 20
答案:
#!/bin/bash
read -p "input a integer:" x
for (( i=1; i<=10; i++))
[[ $x2 -eq 1 ]] && man mkdir>>mkdirHelp;cat mkdirHelp
[[ $x2 -eq 2 ]] && man rmdir>>rmdirHelp;cat rmdirHelp
[[ $x2 -eq 3 ]] && man ls>>lsHelp;cat lsHelp
File commands
Directory commands
List the users currently logged in
答案:
#!/bin/bash
echo "************Main Menu**************"
echo File commands
echo Directory commands
#!/bin/bash
flag=1
until [ $flag -eq 0 ]
do
echo "************Main Menu**************"
echo 1 File commands
shell 编程题
Shell 编程题以下是一个基于 shell 编程的题目集,覆盖了从基础的文件操作到复杂的系统调用的多个方面。
1. 文件操作**题目**:编写一个 shell 脚本,检查一个目录中的所有文件的MD5 哈希值是否都相同。
2. 文本处理**题目**:使用 awk 和 sed 命令,从文本文件中提取出所有的数字,并将它们相加。
3. 命令执行与重定向---------------**题目**:编写一个 shell 脚本,可以执行一个外部命令并获取其输出,然后基于该输出进行某些操作。
4. 变量与数据流-----------**题目**:使用 bash shell 脚本编写一个函数,该函数可以将一个字符串中的所有小写字母转换为大写。
5. 条件判断--------**题目**:编写一个 shell 脚本,判断两个文件是否相同(大小和内容)。
6. 循环结构--------**题目**:编写一个 shell 脚本,可以循环遍历一个目录下的所有文件,并对每个文件执行某个操作。
7. 函数与模块化-----------**题目**:编写一个 shell 函数,该函数可以接受一个目录作为参数,并统计该目录中的文件数量。
8. 并发与多线程(某些 shell 环境支持)----------------------**题目**:使用 bash 的并发特性,编写一个脚本,可以在多个线程中同时处理多个任务。
9. 系统调用与外部工具集成-----------------**题目**:编写一个 shell 脚本,该脚本可以调用外部工具(例如 grep、awk、sed 等)来处理文本数据。
10. 用户交互与图形界面(特定 shell 环境)-------------------------This topic is not specific to shell programming, but requires the use of a graphical user interface (GUI) toolkit such as GTK+ or Qt. Therefore, it cannot be covered in this document.。
shell脚本练习题
shell脚本例子集锦(习题总结)练习一:写一个脚本1.设定变量FILE的值为/etc/passwd2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)Hello,root,your UID is 0.3.统计一个有多少个用户答案一:#!/bin/bashfile="/etc/passwd"LINES=`wc -l $file | cut -d" " -f1`for I in `seq 1 $LINES`;douserid=`head -$I $file | tail -1 |cut -d: -f3`username=`head -$I $file | tail -1 |cut -d: -f1`echo "hello $username,your UID is $userid"doneecho "there are $LINES users"答案二:#!/bin/bashfile=/etc/passwdlet num=0for I in `cat $file`;dousername=`echo "$I" | cut -d: -f1`userid=`echo "$I" | cut -d: -f3`echo "Hello,$username,your UID is $userid"num=$[$num+1]doneecho "there are $num users"练习二:写一个脚本1.切换工作目录至/var2.依次向/var目录中的每个文件或子目录问好,形如:(提示:for FILE in /var/*;或for FILE in `ls /var`;)Hello,log3.统计/var目录下共有多个文件,并显示出来答案:#!/bin/bashcd /varlet num=0for I in `ls /var/*`;doecho "hello $I"num=$[$num+1]doneecho "the number of files is $num"练习三:写一个脚本1.设定变量file的值为/etc/passwd2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容3.把这些行保存至/tmp/mypasswd文件中答案:#!/bin/bashfile="/etc/passwd"for I in 2 4 6 10 13 15;doexec 3>/tmp/mypasswdline=`head -$I $file | tail -1`echo "$line"echo "$line" >&3exec 3>&-done练习四:写一个脚本传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商答案如下:vim test.sh#!/bin/bashecho "first number $1" (表示输出第一个数)echo "second number $2" (表示输出第二个数)echo "$(($1+$2))" (输出两数之和)echo"$[$1-$2]" (输出两数之差)echo"$[$1*$2]" (输出两数之积)echo"$[$1/$2]" (输出两数之商):wq(表示保存并退出vi编辑器)chmod +xtest.sh (给test.sh执行的权限)./test.sh 23 (传递两个参数并执行脚本作业一:写一个脚本:1.创建目录/tmp/scripts2.切换工作目录至此目录中3.复制/etc/pam.d目录至当前目录,并重命名为test4.将当前目录的test及其里面的文件和子目录的属主改为redhat5.将test及其子目录中的文件的其它用户的权限改为没有任何权限答案:#!/bin/bashmkdir -v /tmp/scriptscd /tmp/scriptscp -r /etc/pam.d ./testchown -R redhat ./testchmod -R o=--- ./test作业二:写一个脚本1.显示当前系统日期和时间,而后创建目录/tmp/lstest2.切换工作目录至/tmp/lstest3.创建目录a1d,b56e,6test4.创建空文件xy,x2y,7325.列出当前目录下以a,x或者6开头的文件或目录6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录答案:#!/bin/bashdatemkdir -pv /tmp/lstestcd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732ls [ax6]*ls [[:alpha:]][[:digit:]]*作业三:写一个脚本添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加答案:#!/bin/bashfor I in `seq 1 10`;docut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$Idone作业四:写一个脚本通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线如果在线,就显示“ip is up”如果不在线,就显示“ip is down”答案: #!/bin/bashfor I in `seq 151 254`;doping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" || echo "192.168.0.$I is down"done例题:shell1.sh 显示日期和时间。
SHELL试题
SHELL 试题姓名:得分:一、选择题:1关于shell 中特殊字符说法错误的是()A 、星号(*):可以匹配任何字符串,包括空串。
B 、问号(?):?可以匹配文件名中的任何字符。
C 、中括号([]):可以匹配一个集合的元素。
D 、执行符号(&):“&”号使程序以后台的形式执行。
2关于shell 中&&,||,|,&说法错误的是()A 、command1 && command2:当且仅当:当且仅当command1执行失败后才执行command2 B 、command1 || command2:当且仅当:当且仅当command1执行失败后才执行command2 C 、command1 | command2:command1输出作为command2的输入D 、command1 & :command1后台执行3关于用户自定义变量说法错误的是()A 、在程序中变量需要事先说明类型。
B 、没有全程、局部的区别,变量可以随时随地定义。
C 、其名称是以字母开头的不包含空白字元的任何字符串,长度不限。
D 、其使用范围只限于程序运行期间。
4关于内置变量变量说法错误的是()A 、$0 Shell 所有参数B 、$n Shell 程序(或过程)的第n 个位置参数值,n=1..9 C 、$* Shell 程序所有的位置参数组成的字符串D 、$# Shell 程序的位置参数个数5下列方法给shell 变量var 赋值报错误的是()A var= ls –l B read var B read var C var=`ls -l` C var=`ls -l` C var=`ls -l` D var=$1 D var=$1 6给脚本shell.ksh 文件的所有者赋予可执行权限正确的语句()A chmod 644 shell.ksh B chmod 755 shell.ksh C chown 644 shell.ksh D chown 755 shell.ksh 7下列不能用于循环控制流程的()A 、for B 、while C 、util D 、go 8如果Shell 程序以"#!"开头,则"#!"后面所写的就是所使用的Shell ,而且要将整个路径名称指出来下列说法错误的是()A 使用Bourne Shell 程序开头是#!/bin/sh B 使用C Shell 程序开头是#!/bin/csh C 使用Korn Shell 程序开头是#!/bin/ksh D 使用/etc/perl 程序开头是#! /etc/perl 9下列说法错误的是( )A[ -f $file ] #名为 $file 的目录是否存在。
linux shell练习题
linux shell练习题Linux Shell是一种基于文本界面的操作系统Shell,可以通过Shell 命令来管理和操作计算机系统。
对于初学者来说,掌握Shell语言是非常重要的。
在本篇文章中,将为你提供一些Linux Shell练习题,帮助你巩固和提升自己的Shell编程技能。
1. 练习题一:文件处理a) 在当前目录下创建一个名为"mydir"的目录。
b) 在"mydir"目录中创建一个名为"mytext.txt"的空白文件。
c) 将"mytext.txt"文件的权限设置为只读。
d) 在"mydir"目录下创建一个名为"mycopy.txt"的文件,并将"mytext.txt"的内容复制到"mycopy.txt"中。
e) 删除"mytext.txt"文件。
2. 练习题二:文本处理a) 创建一个名为"mytext.txt"的文本文件,并在文件中写入以下内容:```Hello, world!This is a test file.This file will be used for text processing exercises.```b) 统计"mytext.txt"文件中的行数、单词数和字符数。
c) 在"mytext.txt"文件中,将所有的"test"替换为"practice"。
d) 在"mytext.txt"文件的每一行前加上行号,并将其保存到一个新文件中。
3. 练习题三:条件语句和循环a) 输入一个数字,判断该数字是正数、负数还是零,并输出相应的提示信息。
b) 输入一个字符串,判断该字符串是否为回文字符串(正序和逆序均相同),并输出相应的结果。
总结几个简单的shell编程题
几个简单的shell编程题
《数的产生》练习题
一、填空
1.最小的自然数是()。
2.与亿位相邻的两个数位分别是()和()。
3.()个一万是十万,10个一百万是()。
4.一千亿里有()个亿,十亿是()个一千万。
5.最小的自然数是(),自然数的个数是(),在自然数里后一个总比前一个().
二、用计算器或笔算。
346+164=70×21= 918÷9=
答案
一
1、1
2、千万位,十亿位
3、10,一千万
4、1000,100
5、1,无数个,大
二510,1470,102
整理丨尼克
本文档信息来自于网络,如您发现内容不准确或不完善,欢迎您联系我修正;如您发现内容涉嫌侵权,请与我们联系,我们将按照相关法律规定及时处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、编写一个名为myfirstshell.sh的脚本,它包括以下内容。
a) 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的。
b) 问候用户。
c) 显示日期和时间。
d) 显示这个月的日历。
e) 显示您的机器名。
f) 显示当前这个操作系统的名称和版本。
g) 显示父目录中的所有文件的列表。
h) 显示root正在运行的所有进程。
i) 显示变量TERM、PATH和HOME的值。
j) 显示磁盘使用情况。
k) 用id命令打印出您的组ID。
m) 跟用户说“Good bye”
2、设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限为rwxr-xr—
3、编写shell程序,实现自动删除50个用户账号的功能。
账号名为stud1至stud50。
4、设计一个shell程序,备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。
5、某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(1)在下午4 :50删除/abc目录下的全部子目录和全部文件;
(2)下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(3)在下午5:55将IDE接口的第二个逻辑分区卸载。
// 采用:vi pram.cron
#(1) 在下午4:50删除/abc目录下的全部子目录和全部文件;
50 16 *** rm -rf /abc/*
#(2) 下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
50 17 *** tar czvf back.tar.gz /data
#(3) 在下午5:55将IDE接口的第二个逻辑分区卸载.
55 17 *** umount /dev/hda6
// 执行:crontab pram.cron
6、每天下午1:30分备份/etc下的所有文件到/home/backup下。
而且只保留最近的7个备份。
写出过程!。