Перейдите в каталог для резервного копирования таблиц sqlite в Linux - PullRequest
0 голосов
/ 16 февраля 2019

Я пишу сценарий для резервного копирования файлов sqlite в каталоге, но я добавляю больше базы данных в каталог и хочу вставить цикл в цикл, но я застрял при создании сценария, как показано в примере ниже:

#!/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, но не для второго.После того, как мне удастся заставить его работать, я буду менять команду echo с помощью команды sqlite3.Большое спасибо.

1 Ответ

0 голосов
/ 16 февраля 2019

Это потому, что у вас нет переменной с именем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...