2015-04-20 184 views
0
#!/bin/sh -x 

if [[ $# -eq 0 ]];then 
    echo "usage: makeSoln <customer name>" 
    exit 
fi 

echo "Customer Name is set to : $1" 

if [ -d "$1" ]; then 
    echo "Solution for $1 already exists!! Please delete it before running this." 
    exit 1; 
fi 

if [ -e "$1" ]; then 
    echo "A file by name '$1' exists!! Please delete it before running this." 
    exit 1; 
fi 

cp -R SolnTemplate $1 

cd $1 

find . -name "pom.xml" | xargs sed -i xx 's/SolnTemplate/'$1'/g' 

當我給出的這個和執行這個文件我正在流汗此錯誤:Linux的shell腳本的sed

+ xargs sed -e xx s/SolnTemplate/Reliance/g 
sed: -e expression #1, char 2: extra characters after command 
+0

從錯誤消息看來,您看起來像是'sed -e xx'而不是'sed -i xx'。 –

回答

0

我沒有去了所有的腳本,但這個命令:

sed -i xx 's/SolnTemplate/'$1'/g' 

應該是:

sed -ixx 's/SolnTemplate/"$1"/g' 

因爲'我從外部S,你需要把在裏面"

1

首先,替換:

find . -name "pom.xml" | xargs sed -i xx 's/SolnTemplate/'$1'/g' 

有了:

find . -name "pom.xml" | xargs sed -ixx 's/SolnTemplate/'$1'/g' 

上述消除-ixx之間的空間。因爲你在Linux上,所以你使用的是GNU sed,與BSD sed不同,它不接受-i和備份後綴之間的空格。

而且,萬一$1名稱中包含空格,則應該用雙引號:

find . -name "pom.xml" | xargs sed -ixx 's/SolnTemplate/'"$1"'/g' 

這仍然需要小心,不要無意中包括任何sed的主動角色$1