0

こんにちは、ユーザーにディレクトリ、連絡先の名前、および番号を入力するように求めるプログラムを作成しています。

プログラムが行うことは、次のような .contact ファイルを作成し、その<contactname>.contact中に連絡先番号を追加することです。ファイルが指定されたディレクトリに既に存在する場合、プログラムは という名前の新しいファイルを作成し、それcontact(1).contactが存在する場合は次のようになりますcontact(2).contact

contact(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 に答える