[英]linux shell script sed
#!/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字符。
我没有遍历所有脚本,但是此命令:
sed -i xx 's/SolnTemplate/'$1'/g'
应该:
sed -ixx 's/SolnTemplate/"$1"/g'
因为'
是从外面来的,所以您需要在里面放入"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.