Bash脚本:将文件内容parsing为数组

问候,

我正在写一个简单的bash脚本,需要parsing文件的内容到一个数组中。 文件中的条目是“新行”分隔 – 所以文件看起来像这样:

path/to/file path/to/other/file 

我想parsing的内容,并重复他们。 我的代码目前看起来像:

 CONTENT=`cat /path/to/text/file.txt` for PATH in $CONTENT do echo $PATH chmod -R 440 $PATH fi 

这段代码对于UNIX行尾的文件非常有用。 但是,如果使用Windows格式的文本文件,它会凄惨地窒息。 “echo $ PATH”语句产生正确的path,但chmod失败,说文件不存在。 我的诀窍是,Windows行结束没有得到修剪,所以它试图chmod文件path,包括一个新的行字符。

无论目标文件是用Unix还是Windows换行创build的,我都需要使这个工作成为可能 – 但是由于我对shell脚本有点新,所以我并不确定如何去做。

我感谢您的帮助!

听起来就像你只需要处理每一行时删除回车。 真正简单的方法是使用dos2unix工具,但是如果你的系统没有,或者你不能得到它,你可以用tr完成类似的事情,例如:

echo $PATH | tr -d '\r'

更多的想法,比如使用sed ,可以在维基百科条目中find。

编辑:我应该指出, $PATH不是一个很大的variables名称,因为它无疑是由环境设置和其他程序可能取决于其价值。 您应该考虑将其更改为$CUR_PATH

我只是改变脚本的第一行:

CONTENT=$(tr -d \\r < /path/to/text/file.txt)