在每个while循环迭代中都有唯一值

时间:2018-03-24 09:54:15

标签: bash

我试图实现的是在我的脚本中定义全局变量。这些变量可以在循环中重用(最好是一个while循环..),每次迭代,循环都应该得到一个新的变量集。

我的剧本(到目前为止):

PACKAGE_ASSET_ID=AUTO`date +%s`000001
TITLE_ASSET_ID=AUTO`date +%s`000002
MOVIE_ASSET_ID=AUTO`date +%s`000003
PREVIEW_ASSET_ID=AUTO`date +%s`000004
POSTER_ASSET_ID=AUTO`date +%s`000005

while read name; do
    #DATE=`date +%s`
    #PACKAGE_ASSET_ID="AUTO${DATE}000001"
    #TITLE_ASSET_ID="AUTO${DATE}000002"
    #MOVIE_ASSET_ID="AUTO${DATE}000003"
    #PREVIEW_ASSET_ID="AUTO${DATE}000004"
    #POSTER_ASSET_ID="AUTO${DATE}000005"

    echo $PACKAGE_ASSET_ID
    echo $TITLE_ASSET_ID
    echo $MOVIE_ASSET_ID
    echo $PREVIEW_ASSET_ID
    echo $POSTER_ASSET_ID
done <names.txt

在文件names.txt中,有15个条目。对于每个条目,while循环都需要处理这些变量集。给我一些像

的东西
AUTO1521884581000001
AUTO1521884581000002
AUTO1521884581000003
AUTO1521884581000004
AUTO1521884581000005

AUTO1521884592000001
AUTO1521884592000002
AUTO1521884592000003
AUTO1521884592000004
AUTO1521884592000005

正如您在脚本中看到的那样,我尝试将其放入while循环中并使用不同的语法,但遗憾的是,没有成功。对于所有15个条目,我得到的结果总是相同的变量集。

1 个答案:

答案 0 :(得分:2)

你真的期望bash(甚至是bash!)需要超过一秒的时间来读取一行吗?尝试添加纳秒。

while read name; do
    DATE=$(date +%s%N)
    PACKAGE_ASSET_ID="AUTO${DATE}000001"
    TITLE_ASSET_ID="AUTO${DATE}000002"
    MOVIE_ASSET_ID="AUTO${DATE}000003"
    PREVIEW_ASSET_ID="AUTO${DATE}000004"
    POSTER_ASSET_ID="AUTO${DATE}000005"

    echo $PACKAGE_ASSET_ID
    echo $TITLE_ASSET_ID
    echo $MOVIE_ASSET_ID
    echo $PREVIEW_ASSET_ID
    echo $POSTER_ASSET_ID
done <names.txt