错误循环? bash脚本

时间:2014-03-29 10:25:29

标签: linux bash shell while-loop

我的代码:

#!/bin/bash
rm screenlog.0
screen -X stuff 'X21'$(printf \\r)
while :
do
grep -i "T" $screenlog.0
if [ $? -eq 0 ];
then
FILE=/etc/passwd 
VAR=`head -n 1 $FILE` 
echo $VAR
rm screenlog.0
break
done

此脚本是删除文件“screenlog.0”向屏幕界面发送命令(X21)。 这是第一部分而且有效。

第二部分是问题: 那应该测试“screenlog.0”的内容,是否有一个带有“T”的东西将内容保存到变量中。

错误:

line 11: syntax error near unexpected token `done'
line 11: `done'

到“屏幕”:它是一个usb设备的屏幕,可以像这样回收无线电信息:

T350B00A66E2
H34D04DE4254

脚本必须在开头用“T”扫描输入的消息(第一个字母是这个十六进制代码后面的Type字段。

要纠正的一些想法或其他解决方案?

我纠正了我的代码:

#!/bin/bash
>screenlog.0
screen -X stuff 'X21'$(printf \\r)
while :
do
sleep 2
grep -i "T" $screenlog.0
if [ $? -eq 0 ];
then
screenlog.0=/etc/passwd
VAR=`head -n 1 $screenlog.0`
echo $VAR
break
fi
done

新错误是:

grep: .0: No such file or directory

全部5秒......

文件screenlog.0存在.. :(

1 个答案:

答案 0 :(得分:4)

哦......你在脚本中错过了fi :)。像语法一样if [ condition ];then #dosomething fi

为您的脚本

if [ $? -eq 0 ];then
    FILE=/etc/passwd  
    VAR=`head -n 1 $FILE` 
    echo $VAR
    rm screenlog.0
    break
fi