linux - BASH脚本中的for循环问题

标签 linux bash

我试图在我的脚本中执行以下循环,以便将邮件发送到我在脚本前面写入的特定文件中的所有用户。我检查文件 $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 | 行而发生的。邮件 -s "消息"$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/

相关文章:

c++ - 使错误 : Missing Includes in C++ Script?

node.js - PM2 EPERM,调用初始化组不允许操作

linux - 更高效的 shell 文本操作

linux - |在一行的开头 - bash

linux - 创建 Zip 文件 Fedora 17

linux - 为什么我的 sed 命令在使用变量时失败?

linux - 使用 SAS EG 包含文件时如何指定本地目录?

c++ - 在 Linux 中使用硬件性能计数器

linux - 对两个文件使用 diff 并通过电子邮件发送

bash - 我将路径添加到 ~/.bashrc 和/root/.bashrc,但是 "sudo adb"仍然报告 "command not found"?