脚本和算术运算的小练习

简介:

练习

1)写一个脚本,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

2)写一个脚本,计算/etc/rc.d/rc.sysinit及/etc/rc.d/init.d/functions文件中所有空白行之和

3)写一个脚本,传递两个文件路径作为参数给脚本,计算两个文件中所有空白行之和

4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?


1)写一个脚本,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@izpo45bh60h6bsz scripts] # nano adduserid.sh
#!/bin/bash
 
sum =
 
#变量不能以数字开头
#命令引用实现赋值
uid10=` head  -n 10  /etc/passwd  tail  -n 1 |  cut  -d ':'  -f3`
uid20=$( head  -n 20  /etc/passwd  tail  -n 1 |  cut  -d ':'  -f3)
 
#算术运算表达式
let  sum =$uid10+$uid20
echo  "let expression: $sum"
sum =$[$uid10+$uid20]
echo  " 变量引用实现赋值\$[算术表达式]:$sum"
sum =$(($uid10+$uid20))
echo  "变量引用实现赋值\$((算术表达式)): $sum"
sum =$( expr  $uid10 + $uid20)
echo  "命令引用实现赋值\$(命令): $sum"

运算结果:

1
2
3
4
5
# bash adduserid.sh
let  expression: 100
变量引用实现赋值$[算术表达式]:100
变量引用实现赋值$((算术表达式)): 100
命令引用实现赋值$(命令): 100

2)写一个脚本,计算/etc/rc.d/rc.sysinit及/etc/rc.d/init.d/functions文件中所有空白行之和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@izpo45bh60h6bsz scripts] # nano addblank.sh
#!/bin/bash
blank1=
blank2=
sum =
name1= /etc/rc .d /rc .sysinit
name2= /etc/rc .d /init .d /functions
 
##命令引用实现赋值
blank1=` grep  -c  '^[[:space:]]*$'  $name1`
blank2=$( grep  -c  '^[[:space:]]*$'  $name2)
 
#算术运算表达式
let  sum =$blank1+$blank2
echo  "let expression: $sum"
sum =$[$blank1+$blank2]
echo  " 变量引用实现赋值\$[算术表达式]:$sum"
sum =$(($blank1+$blank2))
echo  "变量引用实现赋值\$((算术表达式)): $sum"
sum =$( expr  $blank1 + $blank2)
echo  "命令引用实现赋值\$(命令): $sum"

运行结果 :

1
2
3
4
5
[root@izpo45bh60h6bsz scripts] # bash addblank.sh
let  expression: 188
变量引用实现赋值$[算术表达式]:188
变量引用实现赋值$((算术表达式)): 188
命令引用实现赋值$(命令): 188

3)写一个脚本,传递两个文件路径作为参数给脚本,计算两个文件中所有空白行之和

cat 连接文本文件,显示到标准输出

1
2
3
4
root@izpo45bh60h6bsz scripts] # cat addblank3.sh 
#!/bin/bash
blanks=$( cat  $1 $2 |  grep  -c  '^[[:space:]]*$' )
echo  "$1 and $2 has $blanks blanklines"

运算结果:

1
2
[root@izpo45bh60h6bsz scripts] # bash addblank3.sh /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions 
/etc/rc .d /rc .sysinit and  /etc/rc .d /init .d /functions  has 188 blanklines


4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@izpo45bh60h6bsz scripts] # nano count.sh 
#!/bin/bash
sum =
#命令引用实现赋值
count1=$( ls  $1 |  wc  -l)
#let 算术运算表达式
let  sum =$ sum +$count1
#换港符,shift默认将传递给脚本的参数,踢一个
shift
 
#命令引用实现赋值
count1=` ls  $1 |  wc  -l`
#变量引用实现赋值
sum =$[$ sum +$count1]
shift
 
count1=$( ls  $1 |  wc  -l)
#命令引用实现赋值
sum =$( expr  $ sum  + $count1)
 
echo  "The sum of filecounts: $sum"

执行的结果 

1
2
3
4
5
6
7
8
[root@izpo45bh60h6bsz scripts] # bash count.sh /etc /var /usr
The  sum  of filecounts: 287
[root@izpo45bh60h6bsz scripts] # ls /etc | wc -l
249
[root@izpo45bh60h6bsz scripts] # ls /var | wc -l
26
[root@izpo45bh60h6bsz scripts] # ls /usr | wc -l
12










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1952923,如需转载请自行联系原作者
目录
相关文章
|
Web App开发 前端开发 JavaScript
跨浏览器兼容性:确保您的网站在各个平台上无缝运行
在当今多样化的网络浏览器市场中,确保您的网站能够在不同浏览器上正常运行变得至关重要。跨浏览器兼容性是一项关键任务,涉及到确保您的网站在不同浏览器和设备上都提供一致的用户体验。本博客将深入探讨跨浏览器兼容性的重要性、挑战以及如何实施有效的兼容性策略。
600 0
|
Go 开发工具 git
CF+hugo部署要点随记
本文介绍了使用Hugo搭建静态博客的方法,Hugo是一款用Go语言编写的静态站点生成器。文中详细描述了在Windows环境下安装Go、Git和Hugo的步骤,并提供了快速启动指南。此外,还介绍了如何通过Git子模块引入主题,以及如何在本地创建和编辑文章。最后,给出了常用Markdown语法示例,帮助用户轻松撰写博客内容。
571 5
ThreeJs制作全息投影视频
这篇文章介绍了使用Three.js来创建全息投影效果的视频教程,涵盖了实现全息效果的技术要点和具体实施步骤。
496 2
ThreeJs制作全息投影视频
|
Java 调度
Java一个线程的生命周期详解
Java中,一个线程的生命周期分为五个阶段:NEW(新建),RUNNABLE(可运行),BLOCKED(阻塞),WAITING(等待),TERMINATED(终止)。线程创建后处于新建状态,调用start方法进入可运行状态,执行中可能因等待资源进入阻塞或等待状态,正常完成或异常终止后进入终止状态。各状态间可相互转换,构成线程的生命周期。
253 9
|
人工智能 弹性计算 机器人
如何在阿里云一键部署FlowiseAI
FlowiseAI 是一款开源低代码开发工具,专为构建定制化的语言学习模型(LLM)应用设计。用户可通过拖放界面轻松创建和管理AI驱动的应用,如聊天机器人和数据分析工具。它基于LangChain框架,支持多种AI模型和数据库集成,实现高度定制化的流程自动化。在阿里云上,可以通过一键部署链接快速部署FlowiseAI,并通过简单的几步配置开始使用。详细操作步骤包括创建ECS实例、获取登录信息等。更多细节可见FlowiseAI官网。
|
JavaScript 前端开发 API
vue3的传送门teleport究竟有多神奇?suspense发起异步请求有多简约?
该文章介绍了Vue3中新特性Teleport和Suspense的使用方法,演示了如何使用Teleport进行DOM节点的非父子关系传送,以及Suspense在处理异步组件加载时的优雅展示和错误处理技巧。
|
人工智能 机器人
LLM活动 | 与 UP 主“老陈打码”一起使用 PAI×LLaMA Factory 搭建 AI 诸葛亮
LLaMA Factory是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过Web UI界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架,GitHub星标超过2万。本次活动基于Meta AI开源的Llama-3 8B模型,使用PAI平台及LLaMA Factory训练框架完成模型的中文化与角色扮演微调和评估,搭建专属“ AI 诸葛亮”问答机器人,7×24小时为你出谋划策!
|
运维 数据可视化 搜索推荐
(极态/JIT)新一代软件开发平台
极态云平台,极态云,也叫Jit、极态。是一个基于全新的软件设计理论的开发平台。他继承了经典软件开发理念理论、技术和方法,结合了最新的可视化零代码开发的价值,开创性地创造了面向元素开发方法论、元素动态管理和分层机制、应用继承、通用系统模型,可扩展的可视化工具框架,彻底解决了产业界一直以来非常棘手的许多难题和冲突,大大提升业务系统软件开发和维护的效率,也必将给产业带来更加健康的发展,可以说,是近20年来,软件开发技术最重大的一次进步。
|
Unix Linux Python
Cron定时设置在linux和mac中的使用
文章详细说明了如何在Linux和Mac操作系统中使用Cron进行定时任务的设置,并提供了多个Cron表达式的实例。
367 0
|
存储 缓存 监控
MySQL 8.0中查询缓存的废弃与原因分析
MySQL 8.0中查询缓存的废弃与原因分析
852 1