【发布时间】:2014-09-11 16:36:40
【问题描述】:
我正在尝试在 Bash 脚本中为一系列数据迁移创建一个循环:
在每一步开始时,脚本应该获取文件夹中最新文件的名称
调用“migrationfiles/”并将其存储在变量“migbefore”中并创建一个名为“migbefore+1”的新变量:
Example: if the "migrationfiles/" folder contains the following files:
migration.pickle1 migration.pickle2 migration.pickle3
变量“migbefore”和migafter应具有以下值:
migbefore=migration.pickle3
migafter=migration.pickle4
在每一步结束时,负责进行数据迁移的函数“metl”使用“migbefore”文件加载数据,并创建1个名为“migafter”的新文件并将其存储在"migrationfiles/" 文件夹,因此在这种情况下,将调用创建的新文件:
"migration.pickle4"
我假装使用的代码如下:
#!/bin/bash
migbefore=0
migafter=0
for y in testappend/*
for x in migrationfiles/*
do
migbefore=migration.pickle(oldest)
migafter=migbefore+1
done
do
metl -m migrationfiles/"${migbefore}"
-t migrationfiles/"${migafter}"
-s "${y}"
config3.yml
done
有谁知道我如何制作第一个循环(在“migrationfiles/”文件夹中搜索最新文件的循环),然后将变量“migafter”的名称指定为“migbefore+1”?
【问题讨论】:
-
这是在任意迁移文件已经存在的情况下运行的东西(所以一开始最新的文件可能是
migration.pickle6)还是总是从0/1开始? -
您好 Etan,它只会以 0 和 1 开始一次,并且永远不会返回理想状态。
-
而
testappend中的文件控制metl将被调用多少次? -
是的,但是对于主“For”中的每次迭代,metl 只使用相应的文件“${y}”运行一次
-
看来你的第一个
do必须移动 6 行:紧跟在for y in testappend/*之后。
标签: bash shell for-loop filenames variable-names