文档章节

037-shell习题02

伟大源于勇敢的开始
 伟大源于勇敢的开始
发布于 2017/09/04 09:07
字数 1526
阅读 161
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

1. 计算“/etc”目录中所有“*.conf”形式的配置文件所占用的总空间大小。

[root@Carlton scripts]# vim mmm.sh 
#!/bin/bash
#cd /etc
Number=$(ls -l $(find /etc -type f -name *.conf)| awk '{print $5}' )
Total=0
for i in $Number
do
Total=`expr $Total + $i`
done
echo "The Total size is $Total kb"

"mmm.sh" 10L, 184C written                                                                                                                                                                                               
[root@Carlton scripts]# ./mmm.sh 
The Total size is 362579 kb

2.由用户从键盘输入一个大于1的整数(如50),并计算从1到该数之间各整数的和。

#/bin/bash
read -p "Please input one number(>1): " UP
sum =0
i=1
#while [ $UP -ge $i ]
#do
  # sum=$[ $sum + $UP]
  # UP=$[$UP-1]
   #i=`expr $i + 1`
#done
while [ $i -le $UP ]
do
   sum=`expr $sum + $i`
   i=`expr $i +  1`
done
 
echo "The sum of 1- $UP is : $sum "

"lll.sh" 20L, 303C written                                                                                                                                                                                               
[root@Carlton scripts]# ./lll.sh 
Please input one number(>1): 8
sum: =0: No such file or directory
The sum of 1- 8 is : 36 
上面两种方法都可以

3. 批量添加20个系统用户账号,用户名称依次为“stu1”、“stu2”、“stu3”、……“stu20”,各用户的初始密码均设置为“123456”。继续编写一个批量删除用户的脚本程序,将添加的20个用户删除。

[root@Carlton September]# ./addstu20.sh 

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456
[root@Carlton September]# grep "stu" /etc/passwd
stu1:x:504:504::/home/stu1:/bin/bash
stu2:x:505:505::/home/stu2:/bin/bash
stu3:x:506:506::/home/stu3:/bin/bash
stu4:x:507:507::/home/stu4:/bin/bash
stu5:x:508:508::/home/stu5:/bin/bash
stu6:x:509:509::/home/stu6:/bin/bash
stu7:x:510:510::/home/stu7:/bin/bash
stu8:x:511:511::/home/stu8:/bin/bash
stu9:x:512:512::/home/stu9:/bin/bash
stu10:x:513:513::/home/stu10:/bin/bash
stu11:x:514:514::/home/stu11:/bin/bash
stu12:x:515:515::/home/stu12:/bin/bash
stu13:x:516:516::/home/stu13:/bin/bash
stu14:x:517:517::/home/stu14:/bin/bash
stu15:x:518:518::/home/stu15:/bin/bash
stu16:x:519:519::/home/stu16:/bin/bash
stu17:x:520:520::/home/stu17:/bin/bash
stu18:x:521:521::/home/stu18:/bin/bash
stu19:x:522:522::/home/stu19:/bin/bash
stu20:x:523:523::/home/stu20:/bin/bash
[root@Carlton September]# ./deluser20 
[root@Carlton September]# grep "stu" /etc/passwd
[root@Carlton September]# cat addstu20.sh 
#!/bin/bash
i=1
while [ $i -le 20 ]
do
  useradd stu$i
  echo "123456" |passwd --stdin  stu$i
 i=`expr $i + 1 ` 

done
[root@Carlton September]# cat deluser20 
#!/bin/bash
i=1
while [ $i -le 20 ]
do
  userdel -r stu$i
  i=`expr $i + 1` 

done
cat /etc/passwd |grep stu

4.由用户从键盘输入一个字符,并判断该字符是否为字母、数字或者其他字符,并输出相应的提示信息。

[root@Carlton September]# cat information.sh 
#!/bin/bash
read -p "Please input any words in this screen : " XX
case $XX in
[a-z]|[A-Z])
   echo "this is english words"
;;
[0-9])

   echo "NUmber"
;;
*)
  echo "It is not number or words"
esac


[root@Carlton September]# ./information.sh 
Please input any words in this screen : 1
NUmber
[root@Carlton September]# ./information.sh 
Please input any words in this screen : e
this is english words
[root@Carlton September]# ./information.sh 
Please input any words in this screen : ^[[17~
It is not number or words

5.编写一个shell程序,计算多个整数值的和,需要计算的各个数值由用户在执行脚本时作为命令行参数给出。

[root@Carlton September]# vim kkk.sh
#!/bin/bash
Result=0
while [ $# -gt 0 ]             $#传参的个数,$1第一个传参的个数
do

    Result=`expr $Result + $1`   
    shift
done
echo "the sum is "$Result""

~
"kkk.sh" 9L, 118C written                                                                                                                                                                                                
[root@Carlton September]# ./kkk.sh  3 3 
the sum is 6
[root@Carlton September]# sh -x kkk.sh 34 55
+ Result=0
+ '[' 2 -gt 0 ']'
++ expr 0 + 34
+ Result=34
+ shift
+ '[' 1 -gt 0 ']'
++ expr 34 + 55
+ Result=89
+ shift
+ '[' 0 -gt 0 ']'
+ echo 'the sum is 89'
the sum is 89

6. 计算任意整数之和

[root@Carlton September]# ./kkk.sh  23 44
the sum is 67
[root@Carlton September]# cat kkk.sh 
#!/bin/bash
Result=0
while [ $# -gt 0 ]
do

    Result=`expr $Result + $1`
    shift
done
echo "the sum is "$Result""

7.在脚本中定义一个help函数,当用户输入的脚本参数不是“start”或“stop”时,加载该函数并给出关于命令用法的帮助信息,否则给出对应的提示信息

[root@Carlton September]# vim jjj.sh
#!/bin/bash
help() {
      echo "Usage: "$0" start|stop"
}
case "$1" in
   start)
      echo "Starting ..."
     ;;
stop)
   echo "stop..."
;;
*)
     help
esac


"jjj.sh" 15L, 162C written                                                                                                                                                                                               
[root@Carlton September]# ./jjj.sh 
Usage: ./jjj.sh start|stop
[root@Carlton September]# ./jjj.sh stop
stop...
[root@Carlton September]# ./jjj.sh sart
Usage: ./jjj.sh start|stop
[root@Carlton September]# ./jjj.sh start
Starting ...

8. 在脚本中定义一个加法函数,用于计算两个数的和,并调用该函数分别计算12+34、56+789的和。

[root@Carlton September]# vim uuu.sh
#!/bin/bash
adder() {
      echo `expr $1 + $2`
}
adder 12 34
adder 56 789

"uuu.sh" [New] 7L, 76C written                                                                                                                                                                                           
[root@Carlton September]# chmod +x uuu.sh 
[root@Carlton September]# ./uuu.sh 
46
845

9.  删除系统中的stu1~stu20各用户账号,但stu8、stu18除外。

#!/bin/bash
i=1
while [ $i -le 20 ]
do
    if [ $i -eq 8 ] || [ $i -eq 18 ] ; then
       let i++
       continue
    fi
    userdel -r stu$i
    let i++
done

"ggg.sh" [New] 12L, 160C written                                                                                                                                                                                         
[root@Carlton September]# chmod +x ggg.sh 
[root@Carlton September]# ./ggg.sh 
userdel: user 'stu1' does not exist
userdel: user 'stu2' does not exist
userdel: user 'stu3' does not exist
userdel: user 'stu4' does not exist
userdel: user 'stu5' does not exist
userdel: user 'stu6' does not exist
userdel: user 'stu7' does not exist
userdel: user 'stu9' does not exist
userdel: user 'stu10' does not exist
userdel: user 'stu11' does not exist
userdel: user 'stu12' does not exist
userdel: user 'stu13' does not exist
userdel: user 'stu14' does not exist
userdel: user 'stu15' does not exist
userdel: user 'stu16' does not exist
userdel: user 'stu17' does not exist
userdel: user 'stu19' does not exist
userdel: user 'stu20' does not exist
[root@Carlton September]# ./addstu20.sh 

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456

passwd read,is 123456
[root@Carlton September]# ./ggg.sh 
[root@Carlton September]# grep "stu" /etc/passwd
stu8:x:511:511::/home/stu8:/bin/bash
stu18:x:521:521::/home/stu18:/bin/bash
[root@Carlton September]# 

10.循环提示用户输入字符串,并将每次输入的内容保存到临时文件“/tmp/input.txt”中,当用户输入“END”字符串时退出循环体,并统计出input.txt文件中的行数、单词数、字节数等信息,统计完后删除临时文件。

[root@Carlton September]# vim fff.sh
#!/bin/bash
while true
do
      read -p "Input a string: " STR
      echo $STR >> /tmp/input.txt
      if [ "$STR" = "END" ] ;  then
           break
      fi
done
wc /tmp/input.txt
rm -f /tmp/input.txt

"fff.sh" [New] 12L, 204C written                                                                                                                                                                                         
[root@Carlton September]# chmod +x fff.sh 
[root@Carlton September]# ./fff.sh 
Input a string: 123
Input a string: 213
Input a string: 3254
Input a string: 3465
Input a string: sadfse
Input a string: END
 6  6 29 /tmp/input.txt

 

下一篇: 036-小试题
伟大源于勇敢的开始
粉丝 10
博文 265
码字总数 142154
作品 0
深圳
运维
私信 提问
加载中
请先登录后再评论。
UTF-8字符串生成工具--utfout

utfout是一个命令行工具,可以通过多种多样的方式产生UTF - 8(Unicode)字符串并且直接将它们用于标准输出,标准错误,或直接传递到终端而不需要shell的支持。字符串可以是重复,推迟,随机生成的,...

书一
2012/11/09
715
0
远程的 Shell 客户端--Rlogin

Rlogin 是一个远程的 Shell 客户端,类似 SSH。其设计的理念是快速而且体积小。Rlogin 不是加密的,不适合用于高安全的环境,但是它最大的优点是速度奇快,而且服务器和客户端都不需要占用太...

匿名
2012/11/17
1.4K
0
Android下的Shell环境--ZShaolin

ZShaolin 在你的 Android 设备上安装一个小型而且强大的脚本和 Shell 环境。并提供编辑、写和上传图片、音频、视频的应用:FFMpeg, ImageMagick, Sox, Oggz, Lua, GNU awk, sed, grep, and ...

匿名
2012/11/21
2.1K
0
PHP搜索引擎--SimpleSearch

SimpleSearch(SPS)是在linux平台下使用c/c++开发,专为PHP开发人员而研发的一款搜索引擎,其基于Xapian开发,目标是让所有PHP开发人员都很容易解决百万级数量以上的全文检索需求。 它的实现真...

梁增友
2012/12/11
2.8K
0
QtCipherSqlitePlugin

这是一个带有加密功能的 SQLite3 Qt 插件,可以同其它 SQL 插件一样在 Qt 程序中使用。Qt 原始携带的 SQLite 插件不带有加密功能,本插件则提供了加密功能,适合于保存密码等敏感信息。 详细...

devbean-豆子
2013/01/10
1.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

鼠年吉祥,新年快乐

今天是大年初一,很高兴在过去一年中有您的陪伴,希望大家在新的一年中平安健康,一切顺利,加油。 邓飞 202001250539 于后园爷爷家 本文分享自微信公众号 - 育种数据分析之放飞自我(R-bre...

育种数据分析之放飞自
01/25
0
0
不烧脑、不耗时、全免费,带你0基础学Python

文末有福利 Python是人工智能的未来。 最近,电气和电子工程师协会( IEEE)发布了顶级编程语言交互排行榜:Python高居首位。 而且随着大数据和人工智能的发展,Python受到了越来越多程序员的...

kunjian
今天
0
0
R语言入门系列之一

写在前面 计算机语言的学习并不困难,关键是一定要由浅入深的实际操作练习。也许最开始的比较简单,学习者一带而过没有实际操作,之后的进一步学习很可能会陷入不知所云的困境,实际操作所带...

SYSU星空
2019/02/17
0
0
Istio-本地运行

概述 基于上一篇 Istio1.6-二进制编译和本地运行 但集中在 pilot-discovery 和 envoy(pilot-agent 大部分功能仅作为 envoy 的 watchdog,略过) NOTE: 以下的描述,相对路径都基于目录 /g...

深蓝苹果
32分钟前
9
0
基于Linux、C、JSON、Socket的编程实例(附代码)

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记! 一、前言 之前在学习socket编程的时候有分享一个基于控制台的简易天气客户端的实现,当时提供的是window下的代码,最近...

学以解忧
2019/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部