linux - 有条件地用单词替换数字

标签 linux shell terminal

我正在使用 Python 脚本每 2 分钟检测一次本地网络中连接的设备 - 将输出保存在一个文件中(我只保存 IP 的最后一个数字)。

这是我的代码:

import os
os.system('for ip in $(seq 1 10); do ping -c 1 192.168.1.$ip>/dev/null; '
          '[ $? -eq 0 ] && echo "$ip" || : ; '
          'done > /home/pi/Desktop/Network/logs/logLocal.txt')

输出例如:

1
2
4
7

我现在的问题是,是否可以通过一个词来代替数字 7? 如果找到设备 7,程序将在文件中写入“七”而不是 7。

感谢您的帮助!

最佳答案

以下脚本将完成这项工作:

# Note that you can use `{a..b}` instead of `seq`
for ip in {1..10} ; do
   # No need to execute the command and then check it's
   # return value. You can do it in one line
   if ping -c 1 192.168.1.$ip > /dev/null ; then
      # check for `7`
      if [ "$ip" = "7" ] ; then
          echo "seven"
      else if [ "$ip" = 5 ] ; then
          echo "five"

      # ... and so on

      else
          echo "$ip"
      fi
   fi
done > output.txt

关于linux - 有条件地用单词替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173675/

相关文章:

macos - 在Mac上安装CMake命令行工具

php - 在solr结果中隐藏路径(id)

c - 根 shell 产卵

c - 我应该处理哪个信号以及如何处理?

java - 如何使 sh 脚本成为 Mac OS 的应用程序

linux - Bash 脚本说它在我的终端上有无效的选项

bash - MacOS 更喜欢/bin/sh 还是/bin/bash?

检查进程是否存在给定它的 pid

c - 优化流程重新启动

iPhone .bashrc 无法正常工作