我正在尝试将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 }
答案 0 :(得分:0)
您根本不需要while read
循环,并且您希望cut
从文件而不是用户读取。
要在第二列中找到某个文件,可以使用
if cut -d: -f2 "$file" | grep -q "$input"
then
echo "Found it"
fi
另请注意,这是一个子字符串匹配,因此如果输入为“foo”,它将匹配第二个字段为“food truck”的文件