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

Sko*_*one 4 bash

你好,

我正在编写一个简单的 bash 脚本,需要将文件的内容解析为数组。文件中的条目以“换行符”分隔——所以文件看起来像这样:

path/to/file
path/to/other/file
Run Code Online (Sandbox Code Playgroud)

我想解析内容并迭代它们。我的代码目前看起来像:

CONTENT=`cat /path/to/text/file.txt`
for PATH in $CONTENT
do
   echo $PATH
   chmod -R 440 $PATH
fi
Run Code Online (Sandbox Code Playgroud)

此代码适用于带有 UNIX 行结尾的文件。但是,对于 Windows 格式的文本文件,它会令人窒息。“echo $PATH”语句生成正确的路径,但 chmod 失败,表示该文件不存在。我的诀窍是 Windows 行尾没有被修剪,所以它试图修改一个包含换行符的文件路径。

无论目标文件是使用 Unix 还是 Windows 换行符创建的,我都需要使这件事起作用——但鉴于我对 shell 脚本有点陌生,我不太确定该怎么做。

我感谢您的帮助!

bjl*_*aub 5

听起来你只需要在处理每一行时删除回车符。真正简单的方法是使用该dos2unix实用程序,但是如果您的系统没有该实用程序或您无法获得它,您可以使用 完成类似的操作tr,例如:

echo $PATH | tr -d '\r'

维基百科条目sed上提供了更多想法,例如使用。

编辑: 我应该指出这$PATH不是一个很好的变量名,因为它无疑是由环境设置的,其他程序可能取决于它的值。您应该考虑将其更改为类似$CUR_PATH.