1
linux 3.5.6-1.fc17.x86_64
GNU bash, version 4.2.37

こんにちは、

次のbashスクリプトファイルがあります。プログラムをテストするために使用しているもの。ただし、valgrind の有無にかかわらずテストできるようにしたいと考えています。したがって、コマンド ライン 'valgrind' から引数を取得し、if ステートメントで比較します。ただし、テスト ケースは時間の経過とともに大きくなり、if-else で多くのコードを繰り返さなければならなくなります。このif-elseを最小限に抑える方法はありますか?

ご提案いただきありがとうございます。

#!/bin/bash

# Abort on error
set -e

echo $1

if [ "$1" == "valgrind" ]; then
    echo "TEST STARTED RUNNING WITH VALGRIND"
    echo "TEST CREATE DATABASE"
    valgrind ./db db.dat c
    echo "TEST CREATE DATABASE OK"

    echo "TEST INSERT"
    valgrind ./db db.dat s 1 steve steve@mail.com
    valgrind ./db db.dat s 2 ben ben@live.com
    valgrind ./db db.dat s 3 lisa lisalow@mailcity.com
    echo "TEST INSERT OK"

    echo "TEST LIST"
    valgrind ./db db.dat l
    echo "TEST LIST OK"

    echo "TEST DELETE"
    valgrind ./db db.dat d 2
    echo "TEST DELETE OK"

    echo "TEST LIST"
    valgrind ./db db.dat l
    echo "TEST LIST OK"

    echo "TEST FETCH"
    valgrind ./db db.dat g 2
    valgrind ./db db.dat g 3
    echo "TEST FETCH OK"

    echo "TEST COMPLETED OK"
else
    echo "TEST STARTED"
    echo "TEST CREATE DATABASE"
    ./db db.dat c
    echo "TEST CREATE DATABASE OK"

    echo "TEST INSERT"
    ./db db.dat s 1 steve steve@mail.com
    ./db db.dat s 2 ben ben@live.com
    ./db db.dat s 3 lisa lisalow@mailcity.com
    echo "TEST INSERT OK"

    echo "TEST LIST"
    ./db db.dat l
    echo "TEST LIST OK"

    echo "TEST DELETE"
    ./db db.dat d 2
    echo "TEST DELETE OK"

    echo "TEST LIST"
    ./db db.dat l
    echo "TEST LIST OK"

    echo "TEST FETCH"
    ./db db.dat g 2
    ./db db.dat g 3
    echo "TEST FETCH OK"

    echo "TEST COMPLETED OK"
fi
4

1 に答える 1

4

私はこのようにします

VALGRIND=""
if [ "$1" == "valgrind" ]
then
  VALGRIND="valgrind"
fi

echo "TEST STARTED"
echo "TEST CREATE DATABASE"
$VALGRIND ./db db.dat c
echo "TEST CREATE DATABASE OK"
...
于 2012-10-11T09:19:26.370 に答える