《跟阿铭学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,如需转载请自行联系原作者
相关文章
|
16天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
23天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
77 1
|
26天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
26 1
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
43 1
|
2天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
13 0
|
14天前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)
|
17天前
|
缓存 自然语言处理 Linux
【Linux】9. 习题①
【Linux】9. 习题①
38 2
|
17天前
|
Shell Linux
【Linux】12. 模拟实现shell
【Linux】12. 模拟实现shell
27 2
|
22天前
|
Shell
【shell】shell命令行放在变量中执行以及变量的常用方法
【shell】shell命令行放在变量中执行以及变量的常用方法
|
22天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本