什么是:for in in ls $ {ILPM_APPLICATION_LOG_DIR} / $ {PREFIX} *`

时间:2011-08-04 06:11:35

标签: bash

APPLICATION_LOG_DIR=/home/users/sosst51/test-chinboon/logs/testdata1
PREFIX=mylog

for i in `ls ${APPLICATION_LOG_DIR}/${PREFIX}*`

这是for loop,我将目录的ls传递给i

2 个答案:

答案 0 :(得分:3)

在bash中,for s in string将获取一个字符串并将其拆分为空白,并迭代每个单词。所以:

for s in a b c; do echo $s; done

会打印:

a
b
c

通过传递ls的输出,您将遍历该目录中的所有文件(但要小心,如果任何文件名包含空格,它将会中断)。这个特别是迭代以“mylog”开头的文件。

答案 1 :(得分:1)

是的,这是一个for循环。是的,ls命令的输出用于提供$i所需的值列表。

ls命令的输出在空白处分成单独的单词(例如换行符,空格或制表符)。这意味着如果任何文件名包含空格,则名称将被拆分为两个(或更多)组件。