0

我在同一个目录中得到两个文件:

foo.db
check.sh

在数据库中foo.db,有一个名为 的表foo.db.1,在 中check.sh,我想检查该表是否存在:

#!/bin/sh
if ![ -e foo.db.1 ]; then
    echo "foo.db.1 does not exist"
    exit 1
fi

然后我得到一个打印说foo.db.1 does not exist。该脚本似乎不起作用,但如果我更改脚本以检查数据库是否存在而不是表存在,它似乎工作:

#!/bin/sh
if ![ -e foo.db ]; then
    echo "foo.db does not exist"
    exit 1
fi
echo "foo.db does exist"

然后我得到打印说'foo.db确实存在'

好像可以检查数据库是否存在,但是不能检查表是否存在于数据库中,不知道怎么办?

4

3 回答 3

2
sqlite3 /database/path "SELECT EXISTS (SELECT * FROM sqlite_master WHERE type='table' AND name='<tableName>');"

0如果表不存在或存在则返回 a 1

于 2013-08-27T20:22:46.350 回答
1

您需要使用该sqlite3程序来读取一个 sqlite3 db

if sqlite3 ./foo.db <<< .schema | grep -qi 'create table foo.db.1 '; then
    echo "table foo.db.1 exists in foo.db"
fi
于 2013-08-27T17:06:19.103 回答
0

使用双括号或放置 ! 外部:

if [[ ! -e foo.db.1 ]]; then
    echo "foo.db.1 does not exist"
    exit 1
fi

if ! [ -e foo.db.1 ]; then
    echo "foo.db.1 does not exist"
    exit 1
fi
于 2013-08-27T16:38:30.307 回答