練習として、マニフェストファイルからアイテムを追加または削除できる単純な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に事前に感謝します。