linux shell 脚本 sed

标签 linux bash shell sh

#!/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 字符。

关于linux shell 脚本 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739736/

相关文章:

linux - 如何使用 grep 修剪特定文本

shell - 如何在unix中使用进程ID仅获取进程名称

linux - 递归地为每个文件创建单独的 MD5 文件

linux - 共享 Xauthority 文件

bash - 如果找到匹配项,则停止查找命令的递归

linux - Perl获取UTC时间并获取UTC时间戳之间的差异

bash - 如何在 gnuplot 中将 .png 图发送到标准输出?

linux - 区分目录名或目录路径

python - 使用 pyudev 的监视器终止 USBdetector 线程

c++ - 在进入 main() 之前我遇到段错误