单独读取所有行 - Solaris ksh

时间:2017-05-30 16:17:57

标签: while-loop solaris ksh

我需要一些脚本帮助。 Solaris 10和ksh。

我有一个名为/temp.list的文件,内容如下:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

所以,我有一个脚本,它读取这个列表并使用行值执行一些命令:

192.168.0.1
192.168.0.2
192.168.0.3

它可以工作,但是它会在第1行执行命令。当它结束时,它会进入第2行,然后连续进行直到结束。我想找到一种方法在列表的每一行同时执行命令ping。有办法吗?

提前谢谢!

Marcus Quintella

1 个答案:

答案 0 :(得分:0)

正如Ari的建议,使用Google搜索ksh多线程会产生很多想法/解决方案。

一个简单的例子:

FILE_TMP="/temp.list"
while IFS= read line
do
ping $line &
done < "$FILE_TMP"

尾随&#39;&#39;说要在后台关闭ping命令,允许循环处理在ping命令在后台运行时继续。

&#39>当然,这只是你现在需要考虑的众所周知的冰山一角:

  • 多个ping命令将转储输出到stdout(即,您将在控制台中获得一个ping输出的混合输出),因此您需要提供一些考虑如何处理多个输出流(例如,重定向到一个公共文件?重定向到单独的文件?)

  • 您需要了解如何管理和(可能)终止在后台运行的命令[请参阅作业 ps fg bg kill ]

  • 如果在shell脚本中运行,您可能会发现自己想要暂停主shell脚本处理,直到完成所有后台作业[请参阅等待]

    < / LI>