0

我正在尝试列出文件夹中的所有文件并将它们添加到变量中,用分号分隔。
然后我需要在文件中回显变量。这是我的片段

#!/bin/bash
SEP=";"
LIB="lib/"
DEP=""
ls -t1 target/lib/ | while read -r FILE
do
    DEP=$DEP$LIB$FILE$SEP
done
echo "$DEP"

DEP变量填充在 while 循环中,如果我从那里回显,我可以看到正确的结果。在循环之外,变量被“清除”并且它没有回应。我如何保留结果?我究竟做错了什么?

OsX 10.8.3 GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin12) 版权所有 (C) 2007 Free Software Foundation, Inc.

4

1 回答 1

4

问题不是while循环而是管道。|符号之后的所有内容都在子shell中运行。要解决此问题,请使用进程替换:

while read -r FILE
# ...
done < <(ls -t1 target/lib/)
于 2013-04-29T09:53:45.040 回答