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