Shell脚本编程案例

(Charon) 2025-04-12 15:41:29

目录

1.第一个Shell脚本

 2.Shell脚本实现获取本地ip地址

3.Shell脚本实现检测局域网内哪些ip地址机器宕机


1.第一个Shell脚本

       打开文本编辑器(vi/vim),新建一个文件first.sh,扩展名为sh(sh代表shell)。扩展名并不影响脚本执行。

#!/bin/bash                 # 声明这是一个 Bash 脚本,用 Bash 来执行(注意:#!是“shebang”,不是注释)

echo "Hello World"          # 输出一行文本“Hello World”到终端

运行Shell脚本的方式

*作为可执行程序

将上述的代码保存为first.sh,并cd到相应目录:

$ chmod +x first.sh      # 给文件 first.sh 添加“可执行权限”,让它可以被当作程序运行

$ ./first.sh             # 运行当前目录下的脚本 first.sh(需要有可执行权限)

 2.Shell脚本实现获取本地ip地址

ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk -F: '{print $2}' | awk '{print $1}'

# |:管道,表示把前一个命令的输出传给后一个命令

# grep按模式(正则表达式)搜索文件中的文本,并输出匹配的行。

# -v:反向选择(取反),即 排除含有 127.0.0.1 的行。

# -F:表示自定义字段分隔符。

# 以冒号 : 作为分隔符,切割文本;输出 第二个字段(即冒号后面的部分)。

3.Shell脚本实现检测局域网内哪些ip地址机器宕机

#!/bin/bash

for i in {1..254}; do
    ping -c 2 -i 0.5 10.0.0.$i &> /dev/null
    if [ $? -eq 0 ]; then
        echo "10.0.0.$i is up"
    else 
        echo "10.0.0.$i is down"
    fi
done

# -c 2:表示发送 2 个 ping 请求。

# -i 0.5:表示发送请求的间隔为 0.5 秒。

# &> /dev/null:这部分表示将命令的所有输出(包括标准输出和错误输出)都重定向到 /dev/null,即丢弃输出。这样做是为了不显示 ping 命令的结果,只关注它的返回值。

# -eq 是一个 比较操作符,用于判断两个数字是否相等。

$? 是一个特殊的变量,它表示上一条命令的退出状态码(Exit Status),也被称为返回值或退出代码。在 Linux 或 Unix 系统中,命令执行结束后都会返回一个退出状态码,用来表示该命令的执行结果。

0表示命令执行成功,没有出现错误。
非0表示命令执行失败,通常不同的非零值代表不同类型的错误(例如文件找不到、权限不足等)。

 

...全文
33 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

440

社区成员

发帖
与我相关
我的任务
社区描述
零声学院,目前拥有上千名C/C++开发者,我们致力将我们的学员组织起来,打造一个开发者学习交流技术的社区圈子。
nginx中间件后端 企业社区
社区管理员
  • Linux技术狂
  • Yttsam
  • 零声教育-晚晚
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请新加入的VIP学员,先将自己参加活动的【所有文章】,同步至社区:

【内容管理】-【同步至社区-【零声开发者社区】

试试用AI创作助手写篇文章吧