0

您好我正在编写一个程序,要求用户输入目录、联系人姓名和号码。

该程序所做的是它创建一个 .contact 文件,<contactname>.contact并在其中添加联系人号码。如果文件已存在于指定目录中,则程序会创建一个名为 的新文件contact(1).contact,如果存在则contact(2).contact以此类推。

当 acontact(1).contact已经存在时,我希望程序创建contact(2).contact,但程序会创建contact(1)(2).contact文件。我不知道问题是什么。任何帮助,将不胜感激 !:)

到目前为止我用 bash 编写的代码。

#!/bin/bash

directory=
if(($# == 0))
then
 echo -n "Please enter directory path:"
 read directory 
 cd $directory


 echo -n "Please enter contact name:"
 read name

 echo -n "Please enter contact number:"
 read number

else
 directory=$1
 cd ${directory}

 name=$2
 number=$3
fi

if [ -e $name.contact ];

then
exists=1
count=1

while [ $exists -eq 1 ];
do
name=$name\($count\)
count=$(($count+1))
if [ ! -f $name.contact ];
then
exists=0

fi

done

echo $number > $name.contact
name=5
else

echo $number > $name.contact

fi
4

2 回答 2

4

您继续附加到修改后的名称。请改用原始名称。

而那个条件...

origname="$name"
while [ -f $name.contact ];
do
  name="$origname($count)"
  count=$(($count+1))
done
于 2013-08-09T09:30:42.840 回答
1

可能您需要保存原始名称:

尝试更改该部分:

while [ $exists -eq 1 ];
do
name=$name\($count\)
count=$(($count+1))
if [ ! -f $name.contact ];
then
exists=0
fi

done

对此:

origname=$name
while [ $exists -eq 1 ];
do
name=$origname\($count\)
count=$(($count+1))
if [ ! -f $name.contact ];
then
exists=0
fi

done
于 2013-08-09T09:31:17.810 回答