2015-04-20 146 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