Linux 中多个远程服务器端口的 For 循环

Linux 中多个远程服务器端口的 For 循环

我的程序需要在脚本中以不同的端口在多个远程服务器上运行,下面是一个例子:

在服务器1上需要运行:

java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002
java -jar test.jar 9001 **.**.**.** 9003
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9020

在服务器2上需要运行:

java -jar test.jar 9001 **.**.**.** 9021
java -jar test.jar 9001 **.**.**.** 9022
java -jar test.jar 9001 **.**.**.** 9023
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9035

...

那么为了更方便地创建脚本,如何在每个服务器脚本中使用 for 循环来运行多个命令?

答案1

服务器1:

for i in $(seq -f "%03g" 1 20)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

服务器2:

for i in $(seq -f "%03g" 21 35)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

尽管

seq -f <format> <first> <last>

使用printf样式格式字符串。格式必须适合打印一个类型的参数double。它可以包含由以下内容组成的转换规范:

  • %:介绍转换规范
  • 0:转换后的值的左侧用零填充,而不是空格(可选)
  • 3:十进制数字字符串(第一位数字非零),指定最小字段宽度(可选)
  • g:以浮点或指数表示法打印类型的参数double。结果小数部分的尾随零被删除;小数点后至少有一位数字时才会出现。(这使我们能够打印double看起来像 的integer

更多详细信息请参阅:

man seq
man 3 printf

相关内容