【发布时间】:2014-08-04 02:30:35
【问题描述】:
我是这样写 bash 的:
#!/bin/bash
GAP=1
Out=$1
ResultFile=$2
len=`wc -l $Out | awk '{print $1}'`
eval "(COMMAND) &"
pid=$!
i=0
while kill -0 $pid; do
if [ -N $Out ]; then
newlen=`wc -l $Out | awk '{print $1}'`
newlines=`expr $newlen - $len`
tail -$newlines $Out > temp
IP=( $(sed -n '<SomeThing>' temp) )
host=${IP[$i]}
echo "exit" | nc $host 23
if [ "$?" -eq "0" ]; then
(
<DoingSomeThing>
) | nc $host 23 1>>$ResultFile 2>&1
fi
len=$newlen
let i++
fi
sleep $GAP
done
当命令IP=( $(sed -n '<SomeThing>' temp) ) 在我的bash 中运行时,sed 命令的结果可能是什么,而输出可能是ip。我只希望当 sed 命令的输出 get ip 将其写入数组并且当 sed 的输出为空时不将其写入数组。
谢谢
【问题讨论】:
-
-N file 如果文件存在并且自上次读取后已被修改,则为真。
-
有趣的是
man test在 OSX 上没有显示。 -
man bash怎么样? :) -
感谢 +1 向我展示了
-N的用法 -
您可能不想使用
eval,并且取决于COMMAND是什么,可能完全没有必要。