Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux BASH脚本中for循环的问题_Linux_Bash - Fatal编程技术网

Linux BASH脚本中for循环的问题

Linux BASH脚本中for循环的问题,linux,bash,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返回用户名

我试图在我的脚本中执行以下循环,以便将邮件发送给我在脚本前面编写的某个文件中的所有用户。我检查文件$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
#!/bin/bash

while read junk name; do
  echo "message" | mail -s "message" "$name"
done < "$eUsers"
同时阅读垃圾名称;做 echo“message”| mail-s“message”“$name” 完成<$eUsers“
尝试使用-x选项运行脚本/bin/bash-x位于顶部,这样您就可以查看详细的输出。在发布的脚本中没有任何内容会导致无限循环。我假设
/letter
(和
/filename
)表示更长的路径,因为直接将文件放在根目录中是不常见的。我还假设您将消息输出到文件是有原因的,因为
echo“message”| mail…
无需文件即可工作。如果您按照建议尝试
-x
,它可能会告诉您问题所在,或者如果您可以发布更多详细信息,我们可能会更好地提供帮助。我认为可能是代码的其他部分导致了这个问题。