2013-11-25 128 views
0

我试图将ID添加到文件。该文件是这样的:虽然循环不遍历文件

field1:field2:field3:field4 

我要检查,如果第二场已经存在(输出消息给用户),或者如果它不能(将其添加到文件一次我从更多信息用户)。我已经写了一个循环来完成这个任务,但是每当我运行脚本的这一部分时,它只会滞后,从不执行。我认为问题在于我的while循环没有正确捕获每一行。

40 checkID() 
41 { 
42 
43  local input 
44  local line 
45  while : ; do 
46   read -p "Enter id (or ENTER to quit):" input 
47   [ -z "$input" ] && return 1 
48   while read line; do 
49     if ! grep -q "$(cut -d: -f2)" "$file"; then 
50       echo "$input" 
51     else  
52       error "id '$input' already exists in the file" 
53     fi 
54   done 
55  done 
56 } 
+3

** 48 **行表示它需要**输入stdin。你尝试输入什么? @Whoppa – akawhy

回答

0

你不想while read循环也没有,你想cut从文件而不是用户阅读。

要找到在第二列的东西一个文件,你可以使用

if cut -d: -f2 "$file" | grep -q "$input" 
then 
    echo "Found it" 
fi 

另外请注意,这是一个字符串匹配,因此,如果输入“富”,它将匹配一个文件,其中第二场是“食品卡车”

+0

我想检查每一行的第二个字段。我将ID存储在每行的第二个字段中。其他字段存储与该ID相对应的信息。这就是为什么我使用while循环。 – Whoppa