我使用以下shell脚本
if [ $RESULT -eq 0 ] && [ -z $(ssh -f $line "w" | tail -n+3 | awk '{print $1}') ]
then
echo $line
echo $line >> hostlist_available
fi
我想做以下事情:
在[ $RESULT -eq 0 ]
成立的条件下,
如果[ -z $(ssh -f $line "w" | tail -n+3 | awk '{print $1}') ]
或$(ssh -f $line "w" | tail -n+3 | awk '{print $1}') only contains string "zwang10"
成立,我们仍会继续循环。
命令$(ssh -f $line "w" | tail -n+3 | awk '{print $1}') ]
将输出如下情况:
只有我的一个名字
zwang10
我的几个名字
zwang10
zwang10
其他人姓名
jack
jack
ben
其他名字和我的
jack
zwang10
zwang10
如何测试输出是否只包含我的名字zwang10
?
修 我尝试在if
中添加条件 if [ $RESULT -eq 0 ] && [ [-z $(ssh -f $line "w" | tail -n+3 | awk '{print $1}')] || [[ $(ssh -f $line "w" | tail -n+3 | awk '{print $1}') == 'zwang10' ]]]
then
echo $line
echo $line >> hostlist_available
fi
但它说syntax error in conditional expression
答案 0 :(得分:1)
这样做:
if [[ $RESULT -eq 0 ]]; then
output=$(ssh -f $line "w" | tail -n+3 | awk '{print $1}')
if [[ -z $output || $output == 'zwang10' ]]; then
echo $line
echo $line >> hostlist_available
fi
fi