【发布时间】:2020-09-03 19:40:09
【问题描述】:
我有一个看起来像这样的 txt 文件,名为 locations.txt:
location-1a
location-2c
location-3d
location-4
location-5a
...
我希望在我的 for 循环中遍历 locations.txt 文件,每个位置应该用于 5 个节点,然后应该使用下一个位置。例如,我希望运行以下命令,
server create --location location-1a node-1
server create --location location-1a node-2
server create --location location-1a node-3
server create --location location-1a node-4
server create --location location-1a node-5
server create --location location-2c node-6
.....
到目前为止,我只有以下名为 script.sh 的脚本,它从 cli 中获取参数。我无法随意更改位置。
mapfile -t locationArr < ~/Documents/files/locations.txt
serverCounter=1
locationCounter=1
counter=1
counter=1
for (( i = 1; i <= $1; i++ ))
do
server create --location $locationArr[$locationCounter] node-$i
counter=$((counter+1))
if [ $counter == 5 ]
then
counter=1
locationCounter=$((locationCounter+1))
done
我想要类似的东西
if counter == 5:
counter=0
nextline
例如,如果我运行script.sh 11,我想要以下结果,
server create --location location-1a node-1
server create --location location-1a node-2
server create --location location-1a node-3
server create --location location-1a node-4
server create --location location-1a node-5
server create --location location-2c node-6
server create --location location-2c node-7
server create --location location-2c node-8
server create --location location-2c node-9
server create --location location-2c node-10
server create --location location-3d node-11
如何在我的 for 循环中遍历 location.txt 文件?我应该将文本文件转换为某种列表变量吗?
【问题讨论】:
-
您的
for循环根本没有读取文件。另见mywiki.wooledge.org/DontReadLinesWithFor -
我知道它不是,我希望它在我的 for 循环之上读取它,我希望 for 循环成为主循环,同时为文件提供一个单独的计数器
-
命令行参数到底是干什么用的?