bash - 编写 bash 脚本来读取、比较和验证外部 IP 地址。需要帮忙

标签 bash

我是 bash 新手,在编写一个简单的脚本来查看调用脚本的服务器是否是我要执行脚本的服务器时遇到了问题。获取外部 IP 很容易,关于它的其他帖子也很多。不过,我在使用 IF 语句时遇到了问题。

#!/bin/bash
if [ wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' -ne '174.123.248.82' ] ; then echo "matches"; fi

我做错了什么?我收到一条错误消息:

test_script.sh: line 2: [: missing `]'
sed: -e expression #3, char 4: unknown command: `.'

谢谢!

最佳答案

在您的脚本中,IF 命令在 | 处中断.改成这样

if [ $(wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//') != '174.123.248.82' ] ; then 
   echo "matches"; 
fi

它有两个变化:wget 命令等在 $(..) 中。所以 bash 将执行该命令序列并在那里替换它的输出。然后我将 -ne 替换为 !=,因为输出不是整数。

关于bash - 编写 bash 脚本来读取、比较和验证外部 IP 地址。需要帮忙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164057/

相关文章:

bash - 临时文件没有被赋予正确的名称。 $BASHPID 正在改变?

bash - 使用 sigterm 杀死进程并在超时后升级到 sigkill

bash - 从文件中获取模式,打印模式而不是匹配的字符串

regex - Bash 正则表达式 : zero to three numbers

linux - 大学项目(bash shell)

MySQL 分组循环 bash

bash - 向已在运行的进程提供参数(通过 bash 脚本)

linux - 如何转义作为 shell 脚本中命令的关键字?

bash - 从命令行将文本转换为 7 位 ASCII

linux - Bash:打开另一个文件中列出的名称的文件