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

简介:

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,如需转载请自行联系原作者
相关文章
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
802 3
Linux系统初始化脚本
|
8月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
759 9
|
8月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
8月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
767 2
|
10月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1161 1
|
12月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
464 29
|
12月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
619 3
|
Unix Shell Linux