我试图在我的脚本中执行以下循环,以便将邮件发送给我在脚本前面编写的某个文件中的所有用户。我检查文件$eUsers是否不为空我执行以下操作:

for name in `cat $eUsers | cut -d' ' -f2`
do
echo "message" > /letter
cat /letter | mail -s "message" $name
done

在脚本的开头,我定义了$eUsers=“/filename”。
代码:cat $eUsers | cut -d' ' -f2返回用户名。我在候机楼试过了,结果成功了。我试着把上面的代码放在一个单独的文件中,并用它的路径(/filename)替换了“$eUsers”,它运行起来没有任何问题。
但是,当我在脚本中使用该代码时,在写入文件$eUsers后,它将进入无限循环。我不明白为什么会这样。在原始文件中,无限循环似乎是由于行cat /letter | mail -s "message" $name而发生的。

最佳答案

#!/bin/bash

while read junk name; do
  echo "message" | mail -s "message" "$name"
done < "$eUsers"

关于linux - BASH脚本中的for循环问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4550176/

10-13 05:10