#!/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'
当我给出这个并执行这个文件时,我得到了这个错误:
+ xargs sed -e xx s/SolnTemplate/Reliance/g
sed: -e expression #1, char 2: extra characters after command
最佳答案
开始,替换:
find . -name "pom.xml" | xargs sed -i xx 's/SolnTemplate/'$1'/g'
与:
find . -name "pom.xml" | xargs sed -ixx 's/SolnTemplate/'$1'/g'
上面删除了 -i
和 xx
之间的空格。因为您在 Linux 上,所以您使用的是 GNU sed,与 BSD sed 不同,它不接受 -i 和备份后缀之间的空格。
此外,以防万一 $1
在名称中包含空格,它应该用双引号引起来:
find . -name "pom.xml" | xargs sed -ixx 's/SolnTemplate/'"$1"'/g'
这仍然需要注意不要无意中在 $1
中包含任何 sed-active 字符。
关于linux shell 脚本 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739736/