単純な在庫データベース用の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に事前に感謝します。

ベストアンサー1

おすすめ記事