2014-10-16 99 views
0

尝试将mysql数据库的表重命名为在每个单词中都有大写的第一个字母,例如名为“renametable”的表将变为“RenameTable”。我有一个同事的几个脚本,通过从一个正确的数据库获取表名来实现这一点,但由于我们已经改变了我们的服务器,所以它不再工作。我不确定发生了什么变化,所以我会在这里发布脚本以防万一你能帮助我。将文件名第一个字母大写的脚本

第一件事就是把/根目录下的2个脚本, 然后导航到mysql数据库所在的文件夹中的数据并运行:

ls -1 | xargs -i /root/rename2.sh {} 

rename2.sh:

force=`echo $1 | tr [:upper:] [:lower:]` 
if [ -f $1 ];then 
mv $1 $force 
fi 

之后,我不得不运行另一个命令:

ls -1 ../<gooddb> | xargs -i /root/rename.sh {} 

其中gooddb是正确的表命名结构数据库

rename.sh:

#!/bin/sh 

lower=`echo $1 | tr [:upper:] [:lower:]` 

if [ -f $lower ];then 
mv $lower $1 
fi 

现在,当我运行第一个命令我得到的错误:

: not founde2.sh: 2: /root/rename2.sh: 
/root/rename2.sh: 7: /root/rename2.sh: Syntax error: end of file unexpected (expecting "then") 

而之后的第二个命令的错误:

xargs: /root/rename.sh: No such file or directory file 

即使我已经允许完全控制这两个文件。

+0

你会如何解析“seedoneat”?那是“SeeDonEat”还是“SeedOneAt”?无论如何,这:'];然后'是一个问题 - 修复它说']; then' ... – twalberg 2014-10-16 20:34:04

回答

1

这看起来像重写线:

: not founde2.sh: 2: /root/rename2.sh: 

Windows行结束($'\r')参与,也许?

相关问题