0

22 行目でエラーが発生し続けます: [!: コマンドが見つかりません

私のスクリプトは、名前、電話番号、生年月日を尋ね、これらの詳細を「birthday.csv」というカンマ区切りの値ファイルに修正します。

次に、「birthday.csv」を生年月日でソートします。次に、新しくソートされたファイルが表示され、その経過時間が計算されます。

誰かが私のスクリプトを見て、これがポップアップしている理由を確認できますか?

#!/bin/bash

a=0
while [ $a -lt 2 ];
do
    echo Please enter a first name
    read firstName
    echo Please enter last name
    read lastName
    echo Please enter phone number
    read phoneNumber
    echo Please enter date of birth - format dd/mm/yyyy
    read dob
    echo "$firstName,$lastName,$phoneNumber,$dob" >> userBirthdays.csv
    echo If you would like to add another person press 1 or enter 2 to proceed
    read a
done

    INPUT=./userBirthdays.csv
    OLDIFS=$IFS
    IFS=","
    [! -f INPUT] &  while read Name Surname Telephone DOB
    do
                    birthMonth=${DOB:0:2}
                    birthDay=#10${DOB:3:2}
                    birthYear=${DOB:6:4}

                    currentDate=`date +%d/%m/%Y`

                    currentMonth=${currenDate:0:2}
                    currentDay=#10${currentDate:3:2}
                    currentYear=${currentDate:6:4}

                    if [[ "$currentMonth" -lt "$birthMonth" ]] || [[ "$currentMonth" -eq "$birthMonth" && "$((#10$currentDay))" -lt "$((#10$birthDay))" ]]
                    then
                            let Age=currentYear-birthYear-1
                    else
                            let Age=currentYear-birthYear
                    fi

            echo "Name : $Name"
            echo "Surname : $Surname"
            echo "Telephone : $Telephone"
            echo "DOB : $DOB"
            echo "Age : $Age"
            echo "##########################################"
done < $INPUT
IFS=$OLDIFS
    echo $DATE

exit 0;

前もって感謝します

4

2 に答える 2

3

[ と ! の間にはスペースが必要です。文字、つまり

[ ! -f $INPUT ] && while read ....
#^-^--------^-^---^------------

私の訂正のように、ほぼ確実に 2 つの「&」文字が必要であることに注意してください。

別の「$」を提供してくれた@GordonDavissonに感謝します;-)

IHTH

于 2013-01-17T18:30:36.687 に答える
1

[and!をスペースで区切ると[、コマンドに!なり、最初の引数になります。

(他に問題がないかどうかはわかりません)。

于 2013-01-17T18:29:31.033 に答える