繁体   English   中英

linux shell脚本sed

[英]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' 

上面的代码删除了-ixx之间的空格。 因为您使用的是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM