我编写了一个脚本来备份目录中的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。 非常感谢。
答案 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