Bash shell在while循环后“清除”一个变量,如何获取变量内文件夹中的所有文件? [复制]
Posted
技术标签:
【中文标题】Bash shell在while循环后“清除”一个变量,如何获取变量内文件夹中的所有文件? [复制]【英文标题】:Bash shell is "clearing" a variable after while loop, how to get all files in a folder inside a variable? [duplicate] 【发布时间】:2013-04-22 22:39:00 【问题描述】:我正在尝试列出文件夹中的所有文件并将它们添加到变量中,并用分号分隔。 然后我需要在文件中回显变量。这是我的sn-p
#!/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.
【问题讨论】:
【参考方案1】:问题不在于 while 循环,而在于管道。 |
符号之后的所有内容都在子shell 中运行。要解决此问题,请使用进程替换:
while read -r FILE
# ...
done < <(ls -t1 target/lib/)
【讨论】:
像魅力一样工作!谢谢!以上是关于Bash shell在while循环后“清除”一个变量,如何获取变量内文件夹中的所有文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章