循环访问目录以备份Linux中的sqlite表

时间:2019-02-16 12:49:42

标签: linux bash sqlite

我编写了一个脚本来备份目录中的sqlite文件,但是我要向目录中添加更多数据库,并希望将for循环放入脚本中,但是我坚持按以下示例构建脚本:

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DATE=`date +%Y%m%d`
for fn in $DIR/*.db; do
echo $fn ".backup '$fn_$DATE.backup'"
done

当我运行此代码以检查其工作方式时:

/db/buyuk_sozluk.db .backup '20190216.backup'
/db/doviz.db .backup '20190216.backup'
/db/football.db .backup '20190216.backup'
/kktc.db .backup '20190216.backup'
/db/ulkeler.db .backup '20190216.backup'

但是我希望得到如下输出:

/db/ulkeler.db .backup '/db/ulkeler.db_20190216.backup'

我无法在该日期之前广告文件名,我不知道为什么它对第一个$ fn有效,但对第二个$ fn不可用。在设法使其工作之后,我将使用sqlite3命令更改echo。 非常感谢。

1 个答案:

答案 0 :(得分:1)

那是因为您没有名为fn_的变量。可能您是在尝试使用fn。尝试

#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DATE=$(date +%Y%m%d)
for fn in $DIR/*.db
do
    echo "${fn} .backup '${fn}_${DATE}.backup'"
done