shell学习:几道常见shell习题

1. 编写shell脚本,计算1-100的和;

2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止;

3. 编写shell脚本,把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下;

4. 编写shell脚本,批量建立用户user_00, user_01, … ,user_100并且所有用户同属于users组;

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

6. 编写shell脚本,判断输入的IP是否正确(IP的规则是,n1.n2.n3.n4,其中1<n1<255, 0<n2<255, 0<n3<255, 0<n4<255)。

以下为练习题答案:

1. #! /bin/bash

sum=0

for i in `seq 1 100`; do

sum=$[$i+$sum]

done

echo $sum

2. #! /bin/bash

n=0

while [ $n -lt "1" ]; do

read -p "Please input a number, it must greater than "1":" n

done

sum=0

for i in `seq 1 $n`; do

sum=$[$i+$sum]

done

echo $sum

3. #! /bin/bash

for f in `ls /root/`; do

if [ -d $f ] ; then

cp -r $f /tmp/

fi

done

4. #! /bin/bash

groupadd users

for i in `seq 0 9`; do

useradd -g users user_0$i

done

for j in `seq 10 100`; do

useradd -g users user_$j

done

5. #! /bin/bash

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

6. #! /bin/bash

checkip() {

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 "the number of the IP should less than 255 and greate than 0"

return 2

fi

done

else

echo "The IP you input is something wrong, the format is like 192.168.100.1"

return 1

fi

}

rs=1

while [ $rs -gt 0 ]; do

read -p "Please input the ip:" ip

checkip $ip

rs=`echo $?`

done

echo "The IP is right!"

时间: 2024-11-01 00:58:47

shell学习:几道常见shell习题的相关文章

shell学习笔记之一(shell内建命令)

注释: # 注意:shell 文件开头的#!/bin/bash 里的#不是注释 运行: 1.bash shell.sh 2.chmod +x shell.sh -> ./shell.sh 3.添加到PATH 变量中 4.. ./shell.sh 排错: 1.语法错误 运行时会有提示 2.逻辑错误 使用echo 打印, sleep number:睡眠number 秒,降低循环速度 使用bash -x 来调试shell 脚本 第三方工具:bashdb 内建命令: 1.判断一个命令是否是内建的:typ

Shell 学习5 - 第一个Shell脚本

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 作为可执行程序 将上面的代码保存为test.sh,并 cd 到相应目

Shell学习之路和我发布过的Shell脚本博文

Shell学习之路 目录 Shell学习之路[第一篇]:别名,管道,用户配置文件,变量,read Shell学习之路[第二篇]:条件测试,运算符,选择结构,for循环结构 Shell学习之路[第三篇]:While循环,C-for循环,Until循环,case分支结构,流程控制语句 Shell学习之路[第四篇]:函数,数组,变量替换 Shell学习之路[第五篇]:多线程脚本 Shell学习之路[第六篇]:Trap信号捕捉命令介绍与Shell结合实战讲解 Shell学习之路[第七篇]:Linux下d

JavaScript Shell学习分享

目录 JavaScript Shell学习分享 简介 安装 使用原因 小结 JavaScript Shell学习分享 简介 JavaScript Shell是由Mozilla提供的综合JavaScript编程环境SpiderMonkey中的一部分 安装 打开SpiderMonkey的每日构建页面(http://mzl.la/MKOuFY),滚动至页面底部,根据你的计算机操作系统,下载相应的JavaScript Shell 下载完成之后,有两种使用JavaScript Shell的方式.可以选择在

Shell 学习2 - 几种常见的Shell

上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少种Shell,其实说的是Shell脚本解释器. bash bash是Linux标准默认的shell,本教程也基于bash讲解.bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个. Linux使用它作为默认的shell是因

shell脚本学习笔记之常见语法结构用法

一,变量 1.变量赋值和替换 语法:variable=value variable="value1 value2" echo  $variable/$"{variable}"   屏幕上显示赋值 echo  $"{variable+b}"  将已经赋值的变量重新设值,临时生效 echo  $"{variable:=value} 屏幕上显示value(前提是value没有被赋值) echo  $"{variable:-value

bash shell学习-基础 (笔记)

When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时,直挂云帆济沧海" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) 一.认识shell 1.什么是shell shell是一种“提供使用者界面”来实现用户与内核通信的软件(命令解释器) 2.为什么要学习shell ①命令行界面的shell在各大Linux发行版中都一样: ②远程管理时命令行界

[Bash Shell] Shell学习笔记

1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,s

shell学习入门

印象中,一直觉得只要多掌握linux命令,自然对于写shell脚本不会陌生.这句话对也不对.前半句对了,的确是要多掌握linux命令,这样才能写出使用高效的脚本,但是后半句不对.要写出shell脚本,还需要掌握shell的内部命令,流程控制,以及重定向等. 最近系统的学习了一些shell的入门,有了很多新的认识,积累如下. 1. 变量: shell中,变量的使用并不需要声明,可以直接使用,而且没有类型的限制,同样一个变量,不同的操作,决定变量不同的类型,比如 [ $a = $b ],这里的变量a