【问题标题】:Bash script is printing the wrong valueBash 脚本正在打印错误的值
【发布时间】:2016-12-06 22:35:36
【问题描述】:

我创建了一个脚本,它根据 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 进行测试...我得到了这个回声...

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

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

【问题讨论】:

  • 通过shellcheck.net 运行您的代码,并在您修复上述错误后返回。

标签: linux bash echo quotes


【解决方案1】:

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

echo "I'm in Alpharetta"

【讨论】:

  • 天哪,不敢相信我忘记了该死的“”哈哈。谢谢! :) 我会接受作为答案,但它不会让我再做 7 分钟。
猜你喜欢
  • 2011-06-13
  • 2020-02-10
  • 1970-01-01
  • 2012-12-15
  • 2020-10-20
  • 2021-01-11
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多