Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
bash-逐行获取-由管道导致的错误?_Bash - Fatal编程技术网

bash-逐行获取-由管道导致的错误?

bash-逐行获取-由管道导致的错误?,bash,Bash,我试图读取文件servers.txt并ping其中的每一行。 它包含每行上的服务器 #!/bin/bash clear output="pingtest.txt" for line in < cat "servers.txt" do ping $line >> "$output" 2>&1 done #/bin/bash 清楚的 output=“pingtest.txt” 对于>“$output”2>&1 完成 但是这个脚本根本不起作用,因为“A for循环

我试图读取文件servers.txt并ping其中的每一行。 它包含每行上的服务器

#!/bin/bash
clear
output="pingtest.txt"
for line in < cat "servers.txt"
do 
ping $line >> "$output" 2>&1
done
#/bin/bash
清楚的
output=“pingtest.txt”
对于>“$output”2>&1
完成

但是这个脚本根本不起作用,因为“A for循环实际上是位置参数。它不从标准输入读取<代码>读取从标准输入读取

你想要

while read line; do
  …
done < "servers.txt"
读行时
;做
…
完成<“servers.txt”

这是BASH常见问题解答。

A for循环基本上是位置参数。它不从标准输入读取<代码>读取从标准输入读取

你想要

while read line; do
  …
done < "servers.txt"
读行时
;做
…
完成<“servers.txt”

这是BASH常见问题解答。

A for循环基本上是位置参数。它不从标准输入读取<代码>读取从标准输入读取

你想要

while read line; do
  …
done < "servers.txt"
读行时
;做
…
完成<“servers.txt”

这是BASH常见问题解答。

A for循环基本上是位置参数。它不从标准输入读取<代码>读取从标准输入读取

你想要

while read line; do
  …
done < "servers.txt"
读行时
;做
…
完成<“servers.txt”

这是BASH常见问题解答。

如果您想坚持使用for循环,可以尝试以下方法:

#!/bin/bash
clear
output="pingtest.txt"
for line in `cat servers.txt`
do 
    ping -c 1 -W 1 ${line} >> ${output} 2>&1
done
此外,您还需要为ping命令提供计数和超时

c:是您希望ping服务器的次数


W:是等待服务器响应的时间量

如果您想坚持使用for循环,可以尝试以下方法:

#!/bin/bash
clear
output="pingtest.txt"
for line in `cat servers.txt`
do 
    ping -c 1 -W 1 ${line} >> ${output} 2>&1
done
此外,您还需要为ping命令提供计数和超时

c:是您希望ping服务器的次数


W:是等待服务器响应的时间量

如果您想坚持使用for循环,可以尝试以下方法:

#!/bin/bash
clear
output="pingtest.txt"
for line in `cat servers.txt`
do 
    ping -c 1 -W 1 ${line} >> ${output} 2>&1
done
此外,您还需要为ping命令提供计数和超时

c:是您希望ping服务器的次数


W:是等待服务器响应的时间量

如果您想坚持使用for循环,可以尝试以下方法:

#!/bin/bash
clear
output="pingtest.txt"
for line in `cat servers.txt`
do 
    ping -c 1 -W 1 ${line} >> ${output} 2>&1
done
此外,您还需要为ping命令提供计数和超时

c:是您希望ping服务器的次数



W:是等待服务器响应的时间量

一般提示:检查shell代码通常会有帮助。@mklement0该页面很棒!。我将为eclipse开发一个插件,将它与ShellEd集成。另一件事是浪费我的时间。谢谢大家!@好主意。当你这么做的时候,来一个很棒的文本包怎么样@更好的主意,更容易。谢谢@mklement0我正要重新发明轮子。一般提示:在中检查shell代码通常会有所帮助。@mklement0该页面很棒!。我将为eclipse开发一个插件,将它与ShellEd集成。另一件事是浪费我的时间。谢谢大家!@好主意。当你这么做的时候,来一个很棒的文本包怎么样@更好的主意,更容易。谢谢@mklement0我正要重新发明轮子。一般提示:在中检查shell代码通常会有所帮助。@mklement0该页面很棒!。我将为eclipse开发一个插件,将它与ShellEd集成。另一件事是浪费我的时间。谢谢大家!@好主意。当你这么做的时候,来一个很棒的文本包怎么样@更好的主意,更容易。谢谢@mklement0我正要重新发明轮子。一般提示:在中检查shell代码通常会有所帮助。@mklement0该页面很棒!。我将为eclipse开发一个插件,将它与ShellEd集成。另一件事是浪费我的时间。谢谢大家!@好主意。当你这么做的时候,来一个很棒的文本包怎么样@更好的主意,更容易。谢谢@mklement0我正要重新发明轮子。在这种特定情况下,使用
for
解析命令输出可能会起作用,但这通常不是一个好主意,因为会发生分词和路径名扩展;请参阅(专门讨论解析
ls
output,但它通常适用)。另外,
bash
也不赞成使用backtick语法(
`…
)代替命令,而支持更灵活的
$(…)
。虽然在这种特定情况下使用
for
解析命令输出可能会起作用,但这通常是个坏主意,因为会发生分词和路径名扩展;请参阅(专门讨论解析
ls
output,但它通常适用)。另外,
bash
也不赞成使用backtick语法(
`…
)代替命令,而支持更灵活的
$(…)
。虽然在这种特定情况下使用
for
解析命令输出可能会起作用,但这通常是个坏主意,因为会发生分词和路径名扩展;请参阅(专门讨论解析
ls
output,但它通常适用)。另外,
bash
也不赞成使用backtick语法(
`…
)代替命令,而支持更灵活的
$(…)
。虽然在这种特定情况下使用
for
解析命令输出可能会起作用,但这通常是个坏主意,因为会发生分词和路径名扩展;请参阅(专门讨论解析
ls
output,但它通常适用)。另外,
bash
也不赞成使用backtick语法(
`…
)进行命令替换,而支持更灵活的
$(…)