2014-10-16 69 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')參與,也許?

相關問題