一位同事要求我帮助编写一个 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 循环中,或者是否有更合适的方法来循环这些值?