在 shell 脚本中生成/解析为多个单字行的单字列表

在 shell 脚本中生成/解析为多个单字行的单字列表

一位同事要求我帮助编写一个 shell 脚本,该脚本除其他外,从数据文件生成单个单词(用户名)的列表,然后循环该列表(作为 for 循环)以针对每个单词运行进一步的命令。这些用户名。

该脚本没有生成预期的输出,并且在放入一些调试 echo 语句(分别输出列表和 for 循环正在处理的当前值)之后,它看起来(我想这并不意外,因为使用了)该列表被生成为单个单词的字符串,每个单词被分成单独的行,而不是需要(?)grep的单行多单词字符串。for

(奇怪的是,for 循环中的一些后续输出似乎每次都按预期使用“当前”用户名值,但其他部分似乎每次都使用列表中的第一个值(大概会被事实上,该列表实际上是由多行组成,而不是由具有多个值的单行组成)。)

该列表是通过以下方式生成的:

OQLIST=`grep "*" ${QCHECK_FILE} | gawk -F " " '{print $1}'`

for循环语法为:

for OQUSER in ${OQLIST}; do
    # various stuff
done

该脚本正在运行/bin/sh(实际上bash在该系统上)。我不思考bash它有任何缺陷,如果它确实按照需要运行的话可能会很好。

有没有办法以所需的方式将列表值放入 for 循环中,或者是否有更合适的方法来循环这些值?

相关内容