我编写了一个脚本来获取数据库中表的所有 ddl,然后将数据库中的所有表合并到单个文件中
可以说我有类似的数据库mydatabase
和表mytable
我将数据库中的所有表 ddl 转储到临时目录中,临时目录中的 ddl 如下所示/home/rahul/temp/mydatabase.mytable.ddl
,一旦转储数据库下的所有表,我将尝试将所有表 ddl 合并到一个文件中,如下所示
cat /home/rahul/temp/mydatabase*ddl >> /home/rahul/final/mydatabase.create
结果出现以下错误:
cat: /home/rahul/temp/mydatabase*ddl: No such file or directory
我该如何解决?
答案1
也许您关闭了 shell 通配符set -f
?
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
$ set -f
$ ls mydatabase*ddl
ls: cannot access 'mydatabase*ddl': No such file or directory
$ set +f
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
答案2
如果cat
无法处理*
通配符,请快速破解:
for file in /home/rahul/temp/mydatabase*ddl; do cat $file >> /home/rahul/final/mydatabase.create; done
我知道我可以使用 shell 变量作为输入和输出文件,并制作一个更复杂的 shell 脚本,但这应该足以处理这个问题。