《跟阿铭学Linux》第12章 shell脚本中的变量:课后习题与答案

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

1. shell脚本中,怎么做可以把某一行给注释掉?

1
在该行的最前面加一个警号 #


2. 如何执行一个shell脚本呢?

1
bash   1.sh 或者  chmod  +x 1.sh; . /1 .sh


3. 为了方便管理,我们约定把shell脚本都放到哪个目录下?

1
放到  /usr/local/sbin/


4. 为了更好的调试shell脚本,我们可以加一个选项来观察shell脚本的执行过程,是哪个选项呢?

1
bash  -x 1.sh


5. 使用date命令打印5天前的日期,要求日期格式为: xxxx-xx-xx

1
2
date  -d  "5 days ago"  +%Y-%m-%d  
或者  date  -d  "-5 day"  +%F


6. 请判断,阿铭的脚本哪里有问题?

1
2
3
4
5
#! /bin/bash
 
a = 1
b = 2
echo  $a, $b

赋值变量值的时候,带了空格


7. shell脚本中如何使用数学运算?请举例说明。

1
2
3
a=1; b=2
c=$[$a+$b]
echo  $c


8. shell脚本中有一个命令可以实现脚本和用户交互,请问是哪个命令,怎么使用?

1
2
3
4
read  -p 
例如  
read  -p  "Please input a number"  n
这样会把用户输入的内容作为n这个变量的值


9. 在shell中如何进行大小或者等于判断?

1
2
大于 -gt  小于是 -lt 等于是 - ne  大于等于是 - ge  小于等于是 - le  格式如下:
if  [ $a - ge  0 ];  then  ... ; fi


10. shell脚本中,用什么符号表示并且,用什么符号表示或者?

1
2
&& 并且
|| 或者


11. shell脚本中,case逻辑判断的结构是什么样的?

1
2
3
4
5
6
7
8
9
10
11
case  $a  in 
     1)
         command
     ;;
     2)
         command
     ;;
     *)
         command
     ;;
esac


12.  列举出shell脚本中常用的循环结构。

1
2
for  in  ... ;  do  ... ;  done
while  ...;  do  ...;  done


13. shell脚本中函数的作用是什么?函数结构是什么样的?

函数可以理解成shell脚本中一个小代码单元,当要用到这段代码时直接调用函数名即可,从而避免重复书写这段代码,提高代码书写效率和质量。

函数的结构为

1
2
3
function  fu_name() {
.....
}


14. 写脚本实现,把一个目录下的所有文件(不含有目录)全部在文件名后面加一个.bak

1
2
3
#! /bin/bash
 
for  in  ` find  . - type  f`;  do  mv  $f $f.bak;  done

1
2
3
4
5
6
7
8
#! /bin/bash
 
 
for  in  ` ls `;  do
   if  [ -f $i ];  then
     mv  $i $i.bak
   fi
done


15. 编写一个shell脚本,将当前目录下大小大于100K的文件全部移动到/tmp/ 目录下。

1
for  in  ` find  . - type  f -size +100K`;  do  mv  $f  /tmp/  done


16. 写一个小脚本,获取本机的HOSTNAME、IP地址以及DNS地址。

标准答案版:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
 
     hostname =` hostname `
     echo  "hostname : "  $ hostname
     ip=` /sbin/ifconfig  -a |  grep  'inet addr'  awk  -F  ':'  '{print $2}'  awk  '{print $1}' `
    for  in  $ip
       do
           echo   "`ifconfig | grep -B1 " $i " | grep -v 'inet addr' | awk '{print $1}'` " $i ""
      done
     DNS=` cat  /etc/resolv .conf | grep  nameserver| grep  - v  '#' `
     echo   $DNS

个人版本:

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
 
 
hostname =` echo  $HOSTNAME`
IP=` ifconfig  eth0 | sed  -n  '2' p | awk  '{print $2}' | awk  -F ':'  '{print $2}' `
dns=` cat  /etc/resolv .conf | grep  'nameserver'  | awk  '{print $2}'  | sed  -n  '1' p`
 
echo  "hostname=$hostname"
echo  "IP=$IP"
echo  "dns=$dns"


17. 写两个小脚本验证break和continue在循环中的作用。

shell脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#! /bin/bash
 
 
echo  "===Test 'break'==="
for  in  ` seq  1 5`;  do
   if  [ $i - eq  3 ];  then
     break
   else
     echo  $i
   fi
done
 
 
echo  "===Test 'continue'==="
for  in  ` seq  1 5`;  do
   if  [ $i - eq  3 ];  then
     continue
   else
     echo  $i
   fi
done

执行结果:

1
2
3
4
5
6
7
8
===Test  'break' ===
1
2
===Test  'continue' ===
1
2
4
5




本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1894348,如需转载请自行联系原作者
相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
116 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
69 2
6种方法打造出色的Shell脚本
|
1月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
33 0
Linux 如何更改默认 Shell
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
65 1
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
58 2
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
80 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
62 6
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
30 0
|
2月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
82 2