shell练习汇总

更新时间:2023-10-10 18:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Shell专项练习题_独家秘制(入门级别练习)

Shell脚本操作实例

1、判断一个用户输入的是数字还是字符串。 ............................................................................. 2 2、判断输入数值是奇数或者偶数的脚本: .................................................................................... 2 3、编写shell脚本,计算1-100的和 ............................................................................................ 3 4、输入n,计算1-n的和 .............................................................................................................. 3 5、编写shell脚本,把/root/目录下的所有目录拷贝到/tmp/目录下; .................................... 3 6、向所有用户问好,并指出id,统计共有多少用户 ................................................................. 4 7、脚本练习,设置变量、读取、保存 ......................................................................................... 4 8、输入两个数,求和、差、商、积、余。 ................................................................................. 5 9、判断输入ip是否正确 ................................................................................................................ 5 10、截取文档关键词,并打印。 ................................................................................................... 6 11、更改文件属性 ........................................................................................................................... 7 12、输入符合要求的字符 ............................................................................................................... 7 14、随机输入数字,比较大小 ....................................................................................................... 8 15、输入脚本,计算所有进程所占内存之和。 ........................................................................... 9 16、找规律写脚本 ......................................................................................................................... 10

1

Shell专项练习题_独家秘制(入门级别练习)

1、判断一个用户输入的是数字还是字符串。

注意:该题目有误,没有考虑到同时输入字符和数字。 #/bin/bash

read -p \输入\

m=`echo $n|sed 's/[0-9]//g' |sed 's/[-0-9]//g'` if [ -z $m ];then echo \数字\else echo \字符\fi

2、判断输入数值是奇数或者偶数的脚本: 注意,特殊字符或者字符串不生效。 #! /bin/bash

read -p \a=$[$n%2] case $a in 1)

echo \ ;; 0)

echo \ ;; *)

echo \ ;; Esac

2

Shell专项练习题_独家秘制(入门级别练习)

3、编写shell脚本,计算1-100的和 #! /bin/bash sum=0

for i in `seq 1 100`; do sum=$[$i+$sum]i done

echo $sum

4、输入n,计算1-n的和

编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止; #!/bin/bash n=0

while [ $n -lt \

read -p \done sum=0

for i in `seq 1 $n`;do sum=$[$i+$sum] done

echo $sum

5、编写shell脚本,把/root/目录下的所有目录拷贝到/tmp/目录下; 只拷贝一个前面的文件,有问题。 #!/bin/bash cd /root

for i in `ls`;do

if [ -d $i ] ; then cp -r $i /tmp/ fi done

3

Shell专项练习题_独家秘制(入门级别练习)

6、向所有用户问好,并指出id,统计共有多少用户

要求: 1.设定变量FILE的值为/etc/passwd;2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么,形如:(提示:LINE=`wc -l /etc/passwd | cut -d\Hello,root,your UID is 0. 3.统计一个有多少个用户 #!/bin/bash file=/etc/passwd let num=0

for I in `cat $file`;do

username=`echo %userid=`echo \

echo \num=$[$num+1] done

echo \

7、脚本练习,设置变量、读取、保存 要求:1.设定变量file的值为/etc/passwd

2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容 3.把这些行保存至/tmp/mypasswd文件中 #!/bin/bash

file=\

for I in 2 4 6 10 13 15;do exec 3>/tmp/mypasswd line=`head -$I $file | tail -1` echo \echo \exec 3>&-

4

Shell专项练习题_独家秘制(入门级别练习)

done

8、输入两个数,求和、差、商、积、余。

传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商,余。 #!/bin/bash

read -p \

read -p \sum=$[$a+$b] dev=$[$a-$b] ji=$[$a*$b] chu=$[$a/$b] yu=$[$a%$b]

echo \echo \echo \echo \echo \

9、判断输入ip是否正确 编写shell脚本,判断输入的IP是否正确(IP的规则是,n1.n2.n3.n4,其中1

if echo $1 |egrep -q '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$' ; then

5

Shell专项练习题_独家秘制(入门级别练习)

# if echo $1 |egrep -q `^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$` ;then a=`echo $1 | awk -F. '{print $1}'` b=`echo $1 | awk -F. '{print $2}'` c=`echo $1 | awk -F. '{print $3}'` d=`echo $1 | awk -F. '{print $4}'` for n in $a $b $c $d; do

if [ $n -ge 255 ] || [ $n -le 0 ];then

echo \ return 2 fi done else

echo \ return 1 fi } rs=1

while [ $rs -gt 0 ];do

read -p \checkip $ip rs=`echo $?` done

echo \

10、截取文档关键词,并打印。

截取文件test.log中包含关键词 ‘abc’ 的行中的第一列(假设分隔符为 ”:” ),然后把截取的数字排序(假设第一列为数字),然后打印出重复次数超过10次的列; #! /bin/bash

6

Shell专项练习题_独家秘制(入门级别练习)

awk -F':' '$0~/abc/ {print $1}' test.log >/tmp/n.txt sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt awk '$1>10 {print $2}' /tmp/n2.txt

11、更改文件属性

要求:1.创建目录/tmp/scripts

2.切换工作目录至此目录中

3.复制/etc/pam.d目录至当前目录,并重命名为test

4.将当前目录的test及其里面的文件和子目录的属主改为redhat 5.将test及其子目录中的文件的其它用户的权限改为没有任何权限 #! /bin/bash

mkdir -v /tmp/scripts cd /tmp/scripts

cp -r /etc/pam.d ./test chown -R sshd ./test chmod -R o-rwx ./test

12、输入符合要求的字符

输出首字母有6、x、y,输出字符数字顺序开头的字符。 #! /bin/bash date

mkdir /tmp/lstest cd /tmp/lstest

mkdir ald b56e 6test touch xy x2y 732 ls [ax6]*

ls [[:alpha:]][[:digit:]]*

7

Shell专项练习题_独家秘制(入门级别练习)

13、测试主机ip是否在线

通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线 如果在线,就显示“ip is up”

如果不在线,就显示“ip is down”

ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒

&>/dev/null 是指标准输出和错误输出都输出到/dev/null上,而不在界面上显示; 后面的&&和|| 是与和或得意思,如a&&b||c ,表示a为真,则执行b;否则执行c

#!/bin/bash

for I in `seq 151 254`;do

ping -c1 -w1 192.168.0.$I &>/dev/null && echo \is up\|| echo \ done

14、随机输入数字,比较大小 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个小于100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小。 #!/bin/bash

m=`echo $RANDOM` n1=$[$m0] while : do

read -p \ if [ $n == $n1 ] then

break

elif [ $n -gt $n1 ] then

8

Shell专项练习题_独家秘制(入门级别练习)

echo \ continue else

echo \ continue fi done

echo \

15、输入脚本,计算所有进程所占内存之和。

ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)

[root@localhost shell]# ps aux | grep -v 'RSS TTY' |awk '{(sum=sum+$6)};END{print sum}' 脚本: #! /bin/bash sum=0

for mem in `ps aux |awk '{print $6}' |grep -v 'RSS' ` do

sum=$[$sum+$mem] done

echo \

9

Shell专项练习题_独家秘制(入门级别练习)

16、找规律写脚本

邱李笔试题shell脚本:

请详细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字。 10 31 53 77 105 141 .......

试题解析:

我想大多数人都会去比较这些数字的差值: 10 31 53 77 105 141 21 22 24 28 36

但是这个差值看,并没有什么规律,而我们再仔细看的时候,发现这个差值的差值是有规律的:

10 31 53 77 105 141 21 22 24 28 36 1 2 4 8 所以,最终得出规律

#! /bin/bash a=10

for i in `seq 1 15` ;do echo $a

a=$[$a+20+2**(i-1)] done

10

Shell专项练习题_独家秘制(入门级别练习)

11

本文来源:https://www.bwwdw.com/article/9jsf.html

Top