【问题标题】:Trying to add a variable (IP address) with seq to print a list of variables(IP) in order [duplicate]尝试使用 seq 添加变量(IP 地址)以按顺序打印变量列表(IP)[重复]
【发布时间】:2020-01-29 16:32:48
【问题描述】:

好的,我正在尝试使用变量(IP 地址)并使用 SEQ 添加到变量中。例如 198.186.1 和列表 198.186.1、198.186.2 等

VALUE=$1
echo SCAN $VALUE.0/24
for i in $(seq 1 1 5);
do
    echo $($VALUE+$i)
done

我让它打印“价值”,但它总是 +1 (198.186.1+1)

【问题讨论】:

  • 算术是$((expression)),而不是$(expression)
  • 你应该知道,因为你写了$(seq 1 1 5)来执行一个命令——这显然不是一个算术表达式。
  • 这不会打印$VALUE+$i,它会尝试将该字符串作为命令执行。除非你有一个名为 192.168.1+1 的脚本,否则它会给你一个 command not found 错误。

标签: linux shell


【解决方案1】:

要计算算术表达式,请使用带有两个括号的$(($VALUE+$i))$(...) 是命令替换,它期望内容是命令(如seq 1 1 5),并替换为命令的输出。

但你不应该在这里使用算术,因为$VALUE 不是数字。您应该只连接变量。

echo $VALUE.$i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2023-03-25
    • 2013-04-30
    相关资源
    最近更新 更多