0

を含むテキストファイル(particulars.txt)があります

personId,personName,employmentType

details.txt

1,jane,partTime
2,bob,fullTime
3,john,fullTime

作業者の名前を入力すると、その人がフルタイムかパートタイムかをチェックし、ユーザーに給与を入力してその人だけのファイルに書き戻すように促すようにします。 . 詳しくご説明いたします。

例えば

Enter Name:jane 
jane is a partTime staff
Enter Hourly Salary:10

したがって、テキストファイル(particulars.txt)は次のようになります

1,jane,partTime,10
2,bob,fullTime
3,johnfullTime

例2

Enter Name:bob
bob is a fullTime staff
Enter monthly Salary:1600

したがって、テキストファイル(particulars.txt)は次のようになります

1,jane,partTime,10
2,bob,fullTime,1600
3,john,fullTime

これが私のコードです

#!/bin/bash
fileName="particulars.txt"
read -p "Enter name:" name
if grep -q $name $fileName; then
     employmentType=$(grep $name $fileName | cut -d, -f4)
     echo "$name is $employmentType" staff"
     if [ $employmentType == "partTime" ]; then
          echo "Enter hourly pay:" 
          read hourlyPay
          #calculations for monthly salary(which I have not done)

     elif [ $employmentType == "fullTime" ]; then
          echo "Enter monthly salary:" 
          read monthlySalary         
     fi    
else 
    echo "No record found"
fi

read -p "Press[Enter Key] to Contiune.." readEnterKey

その人がどの雇用形態に属しているかしかわかりませんが、その特定の人だけの給与を行の最後に追加するにはどうすればよいか/何をすればよいかわかりません。私は sed を読みましたが、 sed を使用して結果を達成する方法についてまだ混乱しているため、皆さんからの助けを求めています。前もって感謝します

4

2 に答える 2

1

スクリプトを変更しました。

#!/bin/bash
fileName="particulars.txt"
read -p "Enter name:" name
if grep -q $name $fileName; then
     employmentType=$(grep $name $fileName | cut -d, -f3)
     emp_name=$(grep $name $fileName | cut -d, -f2)  # Getting emp name
     emp_id=$(grep $name $fileName | cut -d, -f1)    # Getting id
     echo "$name is $employmentType staff"
     if [ $employmentType == "partTime" ]; then
          echo "Enter hourly pay:" 
          read hourlyPay
          #calculations for monthly salary(which I have not done)
          sed -i "s/^$emp_id.*$/&,$hourlyPay/g" $fileName  # Modifying the file by using id.

     elif [ $employmentType == "fullTime" ]; then
          echo "Enter monthly salary:" 
          read monthlySalary
     fi
else
    echo "No record found"
fi

read -p "Press[Enter Key] to Contiune.." readEnterKey

以下の行を追加しました。

emp_id=$(grep $name $fileName | cut -d, -f1)
emp_name=$(grep $name $fileName | cut -d, -f2)
sed -i "s/^$emp_id.*$/&,$hourlyPay/g" $fileName
于 2013-10-28T05:55:56.457 に答える