周考

本文链接 https://www.jianshu.com/p/40c21584f3c2

1. 写出执行脚本的几种方式,并且说明执行是需要具备的必要条件

2. 看下面的代码,回答最后一个命令的输出,并说名原因

[root@sharkyun ~]# name=QF
[root@sharkyun ~]# bash
[root@sharkyun ~]# name=千锋云计算
[root@sharkyun ~]# exit
exit
[root@sharkyun ~]# echo $name

子 shell 的 变量 不会传递给父 shell

3. 你能写出在 shell 中定义变量时需要遵循的规则吗?

4. 写出几个你知道的 Linux 系统中的 环境变量

$HOME
$USER
$PWD

5. 如何将一个自定义变量声明为 环境变量,并说出环境变量和自定义变量有什么比较明显的区别

export  变量名

6. 写出在 shell 脚本中 $? $$ $! ${#name} 分别代表的意义?

7. 在 shell 脚本中 $0 $2 分别指的是什么?

8. 目前有个一个 shell 脚本,脚本的路径是 /home/shark/bin/qf.sh , 希望每周一到周五的凌晨 2 点钟 执行 一次。该如何做?

9. if 判断语句结构,有几种?写出可以判断情况最多的语句结构

10. 如何测试 一个路径是 普通文件?如何测试一个目录是否存在?如何测试一个变量被定义了非空的值?

11. 已知如下文件内容,写出 获取网卡名以及这个网卡对应的 IP 和 Mac 地址的代码或命令

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:93:78:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.100/24 brd 192.168.122.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe93:78e1/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


old=$IFS
IFS=$'\n'
#inf=$(cat ip.txt  |grep -v 'inet 127'|grep -E 'link/ether|inet ' |tac)
inf=$(ip a  |grep -v 'inet 127'|grep -E 'link/ether|inet ' |tac)
for item in $inf
do
    if [[ "$item" =~ inet ]];then
        net_name=$(echo $item | awk '{print $8}')
        net_ip=$(echo $item | awk '{print $2}')
        echo "NET_NAME: $net_name | NET_IP: $net_ip"
    else
        net_mac=$(echo $item | awk '{print $2}')
        echo "NET_MAC: $net_mac"
    fi
done
export IFS=$old
o=$IFS
IFS=$'\n'

for line in $(cat ip.txt  |grep -v 'inet 127' |grep  -E 'link/ether|inet ' |tac)
do
  if [[ "$line" =~ link  ]];then
      mac=$(echo $line | awk '{print $2}')
  else
      ip=$(echo $line | awk '{print $2}')
      name=$(echo $line | awk '{print $NF}')
  fi

  if [ ! -z "$mac" -a ! -z "$ip" ];then
      echo "NAME: $name | IP: $ip | Mac: $mac"
  fi

done
export IFS=$o

12. 有如下命令的输出,写出获取丢包率的代码或命令

0% packet loss 就是丢包率,这里是 0,注意只要数字部分,不要 %

[root@kube-master ~]# ping -c2 www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=56 time=3.15 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=56 time=2.80 ms

--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 2.802/2.976/3.151/0.182 ms


13. 写出 awk 的语法格式

14. 如何把 /usr/local/python/bin 添加到环境变量 PATH中,要求在当前环境中立刻生效,且以后永久生效。

15. 已知程序目录 /opt/cmdb/log/ 下有以 .log 结尾的日志文件,日志文件每天一个,格式如下 2019-09-01.log, 现在只希望保留 10 天的日志,把 10 天之前的日志压缩打包后,备份到 远程服务器 10.3.134.186/backup/ 目录下, 远程服务器的用户使用 back 默认已经建立了互相,请写出具体代码。

16. 写出匹配日期格式 YYYY-MM-DD 的正则表达式

[root@sharkyun ~]# echo "2019-12-30" |egrep  '[1-9][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[01])'
2019-12-30
[root@sharkyun ~]# echo "1919-12-30" |grep -E '[1-9][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[01])'
1919-12-30
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,521评论 0 5
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,599评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,883评论 0 10
  • 一、选择题(每题2分) 1.1 设超级用户root当前所在目录为:/usr/local,键入cd命令后, 用户当前...
    张小鱼哦阅读 471评论 0 0
  • 一、选择题(每题2分) 1.1设超级用户root当前所在目录为:/usr/local,键入cd命令后, 用户当前所...
    帝王权心阅读 283评论 0 3