간단한 인벤토리 데이터베이스를 위한 bash 스크립트

간단한 인벤토리 데이터베이스를 위한 bash 스크립트

연습으로 매니페스트 파일에서 항목을 추가하거나 제거할 수 있는 간단한 bash 스크립트를 만들어야 합니다.

요구사항은 다음과 같습니다.

각 항목은 다음 속성을 가질 수 있습니다.

  • 신분증 (필수)
  • 추가된 날짜(필수)
  • 이름 (필수)
  • 유형(필수)
  • 노트
  • 날짜 삭제

항목 추가

  • 명령줄에서 프로젝트 속성 "name", "type" 및 "comment"를 읽고
  • "ID" 및 "날짜 추가" 생성
  • 인벤토리에 새 항목 추가

ID로 항목 삭제

  • 삭제 날짜 설정
  • 인벤토리 목록에 표시되지 않도록

인벤토리 목록에는 다음 열이 표시됩니다.

  • ID
  • 유형
  • 이름
  • 날짜 추가
  • 노트
  • 삭제 날짜(삭제된 항목을 표시하는 기능을 구현한 경우)

이것이 내가 한 일입니다:

라는 파일을 만듭니다.데이터 베이스

touch database

라는 파일을 만듭니다.Inventory.sh

echo
echo Please select one of the following options:
echo
echo 'a = Add a record'
echo 'b = Delete a record'
echo 'c = Show inventory'
echo 'd = Exit database'


echo
        read choice

                case $choice in
a) /home/dagobert/Desktop/Assignments/A8/add_record.sh;;
b) /home/dagobert/Desktop/Assignments/A8/del_record.sh;;
c) /home/dagobert/Desktop/Assignments/A8/list_record.sh;;
d) exit;;

*) echo Invalid choice - Bye.

                esac

라는 파일을 만듭니다.addrecord.sh

echo Please enter item name:
read item
echo

        grep -q $item /home/dagobert/Desktop/Assignments/A8/database
        if [ $? -eq 0 ]
        then
        echo ERROR -- Item $item already exist
        echo
        exit 0
        fi


echo Please enter item type:
read type
echo

echo Please enter Description:
read description
echo

echo "ID:$RANDOM" "NAME:$item" "CATEGORY:$type" "NOTES:$description" "Date added:$(date)" >> database

echo "The provided item has been added"
echo

echo
echo Please select one of the following options:
echo
echo 'a = Add a record'
echo 'b = Delete a record'
echo 'c = Show inventory'
echo 'd = Exit database'

echo
        read choice

                case $choice in
a) /home/dagobert/Desktop/Assignments/A8/add_record.sh;;
b) /home/dagobert/Desktop/Assignments/A8/del_record.sh;;
c) /home/dagobert/Desktop/Assignments/A8/list_record.sh;;
d) exit;;

*) echo Invalid choice - Bye.

                esac

라는 파일을 만듭니다.레코드 삭제.sh

echo Please enter ID or the itemname you want to delete?
read item
echo

        grep -q $item /home/dagobert/Desktop/Assignments/A8/database
        if [ $? -eq 0 ]
        then
        echo
        sed -i '/'$item'/d' /home/dagobert/Desktop/Assignments/A8/database
        echo $item has been deleted
        else
        echo Record does not exist
        fi

echo
echo Please select one of the following options:
echo
echo 'a = Add a record'
echo 'b = Delete a record'
echo 'c = Show inventory'
echo 'd = Exit database'

echo
        read choice

                case $choice in
a) /home/dagobert/Desktop/Assignments/A8/add_record.sh;;
b) /home/dagobert/Desktop/Assignments/A8/del_record.sh;;
c) /home/dagobert/Desktop/Assignments/A8/list_record.sh;;
d) exit;;

*) echo Invalid choice - Bye.

                esac

라는 파일을 만듭니다.listrecord.sh

clear
cat /home/dagobert/Desktop/Assignments/A8/database  

echo
echo Please select one of the following options:
echo
echo 'a = Add a record'
echo 'b = Delete a record'
echo 'c = Show inventory'
echo 'd = Exit database'

echo
        read choice

                case $choice in
a) /home/dagobert/Desktop/Assignments/A8/add_record.sh;;
b) /home/dagobert/Desktop/Assignments/A8/del_record.sh;;
c) /home/dagobert/Desktop/Assignments/A8/list_record.sh;;
d) exit;;

*) echo Invalid choice - Bye.

                esac

항목을 추가하고 제거하는 것은 매력처럼 작동하지만 일치하지 않는 요구 사항이 있습니다. 항목을 삭제하면 기록을 유지하는 대신 파일 데이터베이스에서 완전히 사라집니다.

삭제된 항목이 파일 데이터베이스에 남아 있고 삭제 날짜가 추가되도록 스크립트를 개선하려면 어떻게 해야 합니까?

모든 도움과 조언에 대해 미리 FreeRunner에 감사드립니다.

관련 정보