shell题库选择题_shell学习:几道常见shell习题

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

1 #! /bin/bash

2 sum=0

3 for i in `seq 1 100`; do

4 sum=$[$i+$sum]5 done6 echo $sum

计算-00和

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

1 #! /bin/bash

2 n=0

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

4 read -p "Please input a number, it must greater than"1":"n5 done6

7 sum=0

8 for i in `seq 1 $n`; do

9 sum=$[$i+$sum]10 done11 echo $sum

12

13

判断输入数字

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

1 #! /bin/bash

2 for f in `ls /root/`; do

3 if [ -d $f] ; then4 cp -r $f /tmp/

5 fi6 done

拷贝目录

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

1 #! /bin/bash

2 groupadd users3 for i in `seq 0 9`; do

4 useradd -g users user_0$i

5 done6

7 for j in `seq 10 100`; do

8 useradd -g users user_$j

9 done

批量建用户

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

1 #! /bin/bash

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

截取文本文件中的字符串

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

1 #! /bin/bash

2 checkip()3 {4 if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then5 a=`echo $1 | awk -F. '{print $1}'`6 b=`echo $1 | awk -F. '{print $2}'`7 c=`echo $1 | awk -F. '{print $3}'`8 d=`echo $1 | awk -F. '{print $4}'`9

10 fi11

12 for n in $a $b $c $d; do

13 if [ $n -ge 255 ] || [ $n -le 0]; then14 echo "the number of the IP should less than 255 and greate than 0"

15 return 2

16 else

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

18 return 1

19 fi20 done21

22 }23

24

25

26 rs=1

27 while [ $rs -gt 0 ]; do

28 read -p "Please input the ip:"ip29 checkip $ip

30 rs=`echo $?`31

32 done33

34 echo "The IP is right!"

35 判断IP地址

判断IP地址

7.编写一个脚本,打印任何数的乘法表。如输入3则打印

1*1=1

2*1=2 2*2=4

3*1=3 3*2=6 3*3=9

1 awk -vstr='3' 'BEGIN{for(i=1;i<=str;i++){for(p=1;p<=i;p++)printf p"*"i"="p*i"\t";printf "\n"}}'

打印剩法口决

8.编写一个脚本,输入自己的生日时间(YYYYMMDD),计算还有多少天多少个小时是自己的生日。

1 read -p "Input your birthday(YYYYmmdd):"date12 m=`date --date="$date1" +%m`3 d=`date --date="$date1" +%d`4 date_now=`date +%s`5 y=`date +%Y`6

7 birth=`date --date="$y$m$d" +%s`8 internal=$(($birth-$date_now))9 if [ "$internal" -lt "0"]; then10 birth=`date --date="$(($y+1))$m$d" +%s`11 internal=$(($birth-$date_now))12 fi13

14 awk -vinternal=$internal 'BEGIN{d=int(internal/60/60/24);h=int((internal-24*60*60*d)/3600);print "There is :"d"days"h"hours."}'

计算时间

9.编写一个脚本,自动将用户主目录下所有小于5KB的文件打包成XX.tar.gz.(提示:用ls,grep,find等命令,文件一般指普通文件)

1 find ~ -size -5 -type f -maxdepth 1|xargs tar zcvpf backup.tar.gz

查找文件

10.编写一个程序,他的作用是先查看一下/root/test/logical这个名称是否存在,若不存在,则创建一个文件。使用touch来创建,创建完成后离开;如果存在的话,判断该名称是否为文件,若为文件则将之删除后新建一个目录。文件名为loglical,之后离开;如果存在的话,而且该名称为目录,则删除此目录。

1 if [ ! -e "/root/test/logical" ]; then touch "hh"; elif [ -f "/root/test/logical" ];then rm /root/test/logical && mkdir logical&&exit;elif [ -d "/root/test/logical" ];then rm /root/test/logical; fi

判断文件是否存在

11.导出 2013-05-24 15:00:00 ~ 2013-05-28 16:00:00 之间的apache访问日志

1 sed -n '/24\/May\/2013:15:00:01/,/28\/May\/2013:16:59:58/p' xxxx-access_log > 20130524.15-20130528.16-access_log

截取指定范转的内容

PS:需要注意的是如果起始时间在日志中不存在,则整个截取将返回 0 行结果。而如果结束时间在日志中不存在,则会截取到日志的最后一条。所以在截取前得要找到最日志中最合适的起始点和结束点。

另一种做法是先使用grep去找到两个点  再使用sed去截取

1 #找出 2013-05-24 15点第一条记录的时间[root@style logs]# grep '24/May/2013:15' xxxx-access_log | head -110.200.114.183 - - [24/May/2013:15:00:01 +0800] "GET /gp10/pic_259_218_1368781965.png HTTP/1.0" 401 484# 找出 2013-05-28 16点最后一条记录的时间[root@style logs]# grep '28/May/2013:16' xxxx-access_log | tail -1222.92.115.195 - - [28/May/2013:16:59:58 +0800] "GET /favicon.ico HTTP/1.1" 404 17846# 然后取这两个时间段之间的记录

View Code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器主板稳定,服务器主板

Intel Atom™ C3000 Mini-ITX 服务器主板&#xff0c;带 4 个DDR4 DIMM, 1 个 PCIe x4插槽 (Gen 3.0), 8 个SATA III, IPMILGA 1151 Intel Xeon E3 v5/ v6 Core™ i 6代/7代 Micro ATX 服务器主板&#xff0c;带4 个DDR4&#xff0c;1 个PCIe x 16&#xff0c;3 个PCIe x 4&am…

Extjs grid 设置行字体颜色

CustSuppGrid Ext.create(Ext.grid.Panel, {title : , // 标题头iconCls : icon-grid, // 标题图标store : CustSuppStore, // 数据源frame : false, // True 为 Panel 填充画面,默认为falseforceFit : false, // 设置为true,则强制列自适应成可用宽度selType : checkboxmodel…

诚龙网刻报错_诚龙PXE网刻工具11.5

终于等到您&#xff01;马上注册登录,做有身份的人&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册账号扫一扫&#xff0c;用微信登录x使用诚龙网维全自动PXE网刻工具进行网刻&#xff0c;你无须架设DHCP和TFTP服务器&#xff0c;也无须进行GHS…

e3 v3服务器芯片组,请问e3 1231 v3搭配下面哪款主板性价比最高?最适合?为什么?

CPU是插在主板上的&#xff0c;因此主板给CPU的电要足。越高级的CPU&#xff0c;工作时频率越高&#xff0c;核心数越多&#xff0c;需要的电就越多。如果是两相的CPU供电&#xff0c;假设是i3&#xff0c;够用。如果是i7&#xff0c;当你的电脑运行软件多的时候&#xff0c;比…

activemq控制发送频率_发送activemq

ActiveMQ入门实例1.下载ActiveMQ去官方网站下载&#xff1a;http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip&#xff0c;然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序...文章嗯哼99252017-12-261030浏览量Spring-boot项目…

Linux学习(一)

从零开始学习linux&#xff0c;这里不多写虚拟机的安装以及centos的设置&#xff0c;简单粗暴从命令行开始&#xff1b; 一、目录介绍 /bin  存放必要的命令 /boot  存放内核以及启动所需的文件 /dev  存放设备文件 /etc  存放系统配置文件 /home  普通用户的宿主目录…

打印机服务器ip修改,怎么样更改打印机服务器的ip地址

怎么样更改打印机服务器的ip地址 内容精选换一换实例常用端口如表1所示。您可以通过配置安全组规则放通实例对应的端口&#xff0c;详情请参见配置安全组规则。无法访问公有云某些端口问题现象&#xff1a;访问公有云特定端口&#xff0c;在部分地区部分运营商无法访问&#xf…

nginx只能访问80端口_nginx 访问不了非80端口

在CentOS服务器上装好了nginx&#xff0c;直接通过公网ip可以正常显示nginx 的 index.html页面。同时我在3000端口跑了node应用&#xff0c;现在我想通过 公网ip:8089的形式访问nginx的配置代码&#xff1a;server {listen 8089;server_name 公网ip;location / {root /usr/web;…

Python中os模块使用方法

os模块提供了对系统环境、文件、目录等操作系统级的接口函数。本文主要描述os模块和os.path模块常用函数以及常用实例。 os模块函数 os.getcwd() 获取当前工作的目录。 os.listdir(dirname) 获取指定目录下的文件和目录&#xff0c;以列表形式输出 os.makedirs(dirname1/dirnam…

66319d电源使用说明书_电热水壶怎么使用?电热水壶烧不开水的问题是什么?

电热水壶可在最短的时间里面给人们煮出热水&#xff0c;是目前人们见到的最为常见的小家电产品&#xff0c;但是电热水壶怎么使用?在使用电热水壶时&#xff0c;有遇到烧不开水的问题&#xff0c;这就影响到正常使用水壶了&#xff0c;电热水壶烧不开水的问题是什么?一、电热…

django 项目中遇到的问题(持续更新中)

问题1&#xff1a;in include provide the namespace argument to include() instead 描述&#xff1a;在最外层的urls.py 添加项目的urls后报错&#xff0c;错误显示&#xff1a;in include provide the namespace argument to include() instead." 解决方案&#xff1a;…

机械制图中外螺纹的画法_机械制图基础知识之图样简化画法

机械制图时是否觉得图样很复杂&#xff0c;很难?那就看看下面的方法吧。1)当物体具有若干相同结构(齿、槽等)&#xff0c;并按一定规律分布时&#xff0c;只需画出几个完整的结构&#xff0c;其余用细实线连接&#xff0c;并注明结构的总数相同结构与简化画法2)若干直径相同且…

获取程序执行的时间

编写程序到一定程度的&#xff0c;我们就不得不考虑成都所占用的内存、时间。那么如何获取程序执行的时间呢&#xff1f;需要用到currentTimeMillis方法。 在程序开始时获取一个时间&#xff0c;结束时获取一个时间&#xff0c;两者相减&#xff0c;即为程序所用时间。 下面程序…

mfc编程 孙鑫_孙鑫VC++视频教程笔记-(3)MFC程序框架的剖析 附1-SDI程序流程图

1,寻找WinMain人口&#xff1a;在安装目录下找到MFC文件夹下的SRC文件夹&#xff0c;SRC下是MFC源代码。路径&#xff1a;MFC|SRC|APPMODUL.CPP&#xff1a;_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow){// call shared/exported …

每天一个linux命令(性能、优化):【转载】free命令

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中&#xff0c;free命令是最经常使用的命令之一。 1&#xff0e;命令格式&#xff1a; free [参数] 2&#xff0e;命令功能&#xff1a; free 命令显示系统使用和空闲…

gitee存放代码_git / gitee 提交本地仓库代码到Git或Gitee流程 及 常见报错

前提&#xff1a;在 Windows 下安装 git 客户端然后直接在 base 中执行命令1、本地初始化 git 设置git config --global user.name "你的名字或昵称"git config --global user.email "你的邮箱"2、进入项目文件夹&#xff0c;初始化目录 --通过命令 git in…

mysql可以存文档_MySQL 文档存储介绍

MySQL 文档存储 可以跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作&#xff0c;直接存储数据。MySQL 可以提供 NoSQL JSON 文档存储Document Store了&#xff0c;这样开发者保存数据前无需规范化normalize数据、创建数据库&#xff0c;也无需在开发之前…

Maven项目配置、检出、运行

副标题&#xff1a;JDK安装到Maven运行 关键字&#xff1a;JDK SVN Maven Tomcat Eclipse IDEA 一、JDK 1、JDK包 JDK包 ../Java/jdk1.8 # 按需 图例 2、环境变量 步骤 计算机 → 属性 → 高级系统设置 → 环境变量 → 系统变量 → 新建/编辑 设置 JAVA_HOME ..…

mysql 存储过程代码_MySQL存储过程及常用函数代码解析

mysql存储过程的概念&#xff1a;存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段。mysql函数的概念&#xff1a;函数是完成特定功能的SQL语句&#xff0c;函数分为内置函数和自定义函数(user-defined function UDF)MySQL存储过程和函数的区别存储过程可以…

MySQL数据库恢复(使用mysqlbinlog命令)

1&#xff1a;开启binlog日志记录 修改mysql配置文件mysql.ini&#xff0c;在[mysqld]节点下添加 复制代码代码如下:# log-bin log-bin E:/log/logbin.log 路径中不要包含中文和空格。重启mysql服务。通过命令行停止和启动mysql服务 复制代码代码如下:c:\>net stop mysql…