2015-09-05 82 views
3

我有一個sql文件,我想通過ssh腳本來更新。我試圖用sed替換那裏的一些文本。我沒有收到錯誤,但文字並未取代。這是我正在使用的代碼。使用變量替換sql文件中的文本

#!/bin/sh 

echo -n "enter theme: " 
read theme 
echo -n "enter username: " 
read user 
echo -n "enter domain/url: " 
read url 

cd /home/$theme/ 

sed -i 's/\/{$theme}/\/{$user}/g' ./$theme.sql 
sed -i 's/{$theme}.domain.net/{$url}/g' ./$theme.sql 

所以,我想,以取代目前的文本($主題變量),在SQL文件我引用新的變量$ USER和$網址。

這裏是什麼將通過和更新進行篩選的SQL代碼片段:

LOCK TABLES `ivg4_options` WRITE; 
/*!40000 ALTER TABLE `ivg4_options` DISABLE KEYS */; 
INSERT INTO `ivg4_options` VALUES (1,'siteurl','http://megashop.domain.net/','yes'),(2,'blogname','Woo Commerce','yes'),(3,'blogdescription','Just another WooCommerce site','yes'),(37,'home','http://megashop.domain.net','yes'),(38,'category_base','','yes'),(40,'advanced_edit','0','yes'),(41,'comment_max_links','2','yes'),(42,'gmt_offset','0','yes'),(43,'default_email_category','1','yes'),(52,'use_trackback','0','yes'),(53,'default_role','subscriber','yes'),(54,'db_version','33055','yes'),(55,'uploads_use_yearmonth_folders','1','yes'),(56,'upload_path','/home/megashop/public_html/wp-content/uploads','yes') 
+0

您可以編輯您的問題,包括該SQL腳本的內容是什麼?查看這些sed行應該採取的行動將會很有幫助。 – Kenster

+0

我剛剛做到了。那是對的嗎? – sven30

+0

是的,那樣更好。所以「megashop」是一個主題的例子嗎? – Kenster

回答

0

首先,擺脫了「{」和「}」。你不需要它們。

第二個問題是:-i需要一個參數(至少有一些版本......它似乎是這裏的情況),所以如果你想忽略它,你必須至少提供一個空字符串''。從sed手冊頁:

-i extension 
     Edit files in-place, saving backups with the specified extension. 
     If a zero-length extension is given, no backup will be saved. It 
     is not recommended to give a zero-length extension when in-place 
     editing files, as you risk corruption or partial content in situ- 
     ations where disk space is exhausted, etc. 

通常它產生一個有些神祕的錯誤消息說「sed的:-i可能無法與標準輸入使用」。你可能已經錯過了這個...

這是最後的腳本:

#!/bin/sh 

echo -n "enter theme: " 
read theme 
echo -n "enter username: " 
read user 
echo -n "enter domain/url: " 
read url 

cd /home/$theme/ 

sed -i '' 's/\/$theme/\/$user/g' ./$theme.sql 
sed -i '' 's/$theme.domain.net/$url/g' ./$theme.sql 
+0

確定運行此腳本,並得到這個: 根@ classic30 [〜]#/dbtest.sh 進入wordpress主題(千佛,megashop:megashop 輸入用戶名:usertest 輸入域/網址:test.test.net/stage sed:無法讀取s/\/$ theme/\/$ user/g:沒有這樣的文件或目錄 sed:無法讀取s/$ theme.domain.net/$ url/g:沒有這樣的文件或目錄 – sven30

相關問題