linux - Bash 脚本打印错误的值

标签 linux bash echo quotes

我创建了一个脚本,根据输入的 NIC 卡名称来分隔它找到的 IP。

#!/bin/bash
echo what is your NIC?
read NIC
IP=`ifconfig $NIC 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`
NEWSTRING=${IP:0:6}
ALPHARETTA="12.101"
EUFAULA="12.102"

if [ "${NEWSTRING}" = "${ALPHARETTA}" ] ; then
  echo I'm in Alpharetta
else
  echo I'm in Eufaula
fi

如果 eth0 是 12.101.1.1,则只需要 (12.101)

我正在比较 12.101 和 12.101 进行测试...并且我得到了这个 echo ...

what is your NIC?
eth0
Im in Alpharetta
else
  echo Im in Eufaula

我显然在做一些愚蠢的事情,但没有看到它..有人能指出我正确的方向吗?

最佳答案

bash 解析器看到您试图在“I'm”一词中回显的撇号字符,并且它认为您正在尝试打印一个跨越脚本第 10 行到第 12 行的长字符串。您甚至可以看到该网站上的语法突出显示也表明存在问题。您应该将要回显的消息用引号引起来。例如:

echo "I'm in Alpharetta"

关于linux - Bash 脚本打印错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006195/

相关文章:

linux - 有没有办法将 "echoing"到标准输出,将什么作为标准输入重定向到程序(Unix)?

linux - Docker构建中的多个go文件

regex - bash 中的 for 循环遍历具有两个特定扩展名的文件

linux - 如何替换包含变量的字符串,下一个包含变量的字符串

npm - 通过 package.json 将视觉样式应用到在 npm 脚本中使用的 echo 命令

bash-回显 : write error: invalid argument

php - 使用 PHP 脚本更改 Linux 主机名

c++ - 如何使用v4l2loopback将图像渲染到/dev/video0?

android - Linux操作系统下的2D安卓游戏开发工具

linux - 使用 make 压缩子文件夹中的特定文件