我有一个多达5个参数的Shell脚本。有带占位符的文件。我想根据一个变量使用sed脚本文件。问题是,当我在sed脚本中定义了变量时,这些变量的值未放入占位符。
#!/bin/bash
A=$1
B=$2
echo "Some string with _PH1_ place holders _PH2_"|sed -i -f script1.sed >> file.txt
一个sed脚本文件
#Sed script 1
s/_PH1_/${A}/g
s/_PH2_/${B}/g
答案 0 :(得分:0)
如果您的sed脚本那么短,那么最好将其内联到bash中:
#!/bin/bash
A=$1
B=$2
#your sed commands but still part of the bash script:
sed -i -e "s/_PH1_/${A}/g" file.txt
sed -i -e "/_PH2_/${B}/g" file.txt
答案 1 :(得分:0)
您需要在sash脚本中创建sed脚本,以便进行变量替换:
#!/bin/bash
A=$1
B=$2
cat >> script1.sed << EOF
s/_PH1_/${A}/g
s/_PH2_/${B}/g
EOF
echo "Some string with _PH1_ place holders _PH2_"|sed -i -f script1.sed >> file.txt
答案 2 :(得分:0)
$ cat tst.sh
#!/bin/bash
set -a
A="$1"
B="$2"
sedScript=$(mktemp)
printf 'sed "\n' >> "$sedScript"
cat script1.sed >> "$sedScript"
printf '"\n' >> "$sedScript"
echo "Some string with _PH1_ place holders _PH2_" | "$sedScript"
rm -f "$sedScript"
$ ./tst.sh foo bar
Some string with foo place holders bar