shell 相关面试题

1. 命令行传入1个字符或数字,数字等于1则显示1,如 果等于2则显示2,如果既不等于1也不等于2,就显示 输入不对,然后退出程序

**项目分析: **

    1. 输入数字
    1. 数字等于1 显示1 退出
    1. 数字等于2 显示2 退出
    1. 数字不是1 也不是2 显示帮助 退出
方法一:
#!/bin/bash
num=$1
[ $# -ne 1 ] &&{
echo "Usage: input number"
exit 1
}
[ $num -eq 1 ] &&{
echo 1
exit 0
}
[ $num -eq 2 ] &&{
echo 2
exit 0
}
[ $num -ne 1 -a $num -ne 2 ]&&{
echo "Usage: input number"}
exit 1
}
#!/bin/bash
num=$1
[ $# -ne 1 ] &&{
echo "Usage: input number"
exit 1
}
[ $num -eq 1 ] &&{
echo 1
exit 0
}
使用正则表达式
[ $num -eq 2 ] &&{
echo 2
exit 0
}
[[ $num =~ ^[12]$ ]] || { echo "Usage: input number" exit 1 }

2. 开发shell脚本,使用传参或read实现比较2个整 数大小,用条件表达式(禁止用if) 进行判断并输出到 屏幕方式提醒用户结果.

注意: 用两种方式实现的时候, 需要对变量是否为数字及参数个数是否正确给 予提示
项目分析: read /传参

  • 判断参数个数是否为2 注意:read命令 的时候 不需要对比命令行参数
  • 参数或变量是否是数字 进行比较
#!/bin/bash
read -p '请输入2个参数:' n1 n2
num1=$n1
num2=$n2
[[ "$num1" =~ ^[0-9]+$  && "$num2" =~ ^[0-9]+$ ]] || {
echo "Usage:$0 num1 num2"
exit 1
}
[ $num1 -eq $num2 ] && {
echo "$num1 == $num2"
exit 0
}
[ $num1 -gt $num2 ] && {
echo "$num1 > $num2"
exit 0
}
[ $num1 -lt $num2 ] && {
echo "$num1 < $num2"
exit 0
}

3.把计算器脚本 修改为if判断格式

#!/bin/bash
num1=$1
num2=$2
[ $# -ne 2 ]&&{
echo "Usage:$0 num1 num2"
exit 1
}
expr $num + $num2 + 2 &>/dev/null
[ $? -ne 0 ] && {
echo "Usage:$0 num1 num2"
exit 2
}
echo $num1 + $num2 |bc -l
echo $num1 - $num2 |bc -l
echo $num1 / $num2 |bc -l
echo $num1 \* $num2 |bc -l

4.企业案列 监控系统可用内存, 小于100M就发送报警邮件 否则,提示内存充足 定时任务每三分钟一次

**项目分析

  • 取出当前内存
  • 书写脚本进行对比
    -- 小于发邮件
    -- 正常 提示正常
  • 定时任务
#!/bin/bash
mail=$(free  -m|awk 'NR==2{print $NF}')
if [ "$mail" -gt "400" ]
then
 echo "内存充足"
else
 echo "内存不足"
 mail -s "内存不足" 364769327@qq.com
fi
定时任务
#*/3 * * * *  sh /server/scripts/men.sh &>/dev/null

5.书写脚本 常用监控内容

目标 使用命令
服务器本地端口监控 ss/netstat lsof
远端端口监控 telnet /nc /nmap
进程 ps -ef ps aux 检查cron
客户端模拟监控:看返回值或者看返回 字符串 curl/wget 只监控静态页面(更加深入lnmp)
数据库 mysql -uroot -poldboy123 -e 'select version();'

检查端口是否开启

[root@m01 /server/scripts]# ss -lntup |grep -w 22
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=7266,fd=3))
tcp    LISTEN     0      128      :::22                   :::*                   users:(("sshd",pid=7266,fd=4))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,960评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,250评论 0 10
  • 4.企业面试题 批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。 5....
    linux_龍阅读 1,279评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,871评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,923评论 6 13

友情链接更多精彩内容