연습으로 매니페스트 파일에서 항목을 추가하거나 제거할 수 있는 간단한 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에 감사드립니다.