【发布时间】:2014-08-04 13:41:49
【问题描述】:
我正在尝试构建一个 sh 脚本,它会自动将 .xml 文件中的关键字替换为字符串,问题出现在 sed 表达式中,这是我的代码:
#!/bin/sh
#STRINGS
string[1]='Johny'
string[2]='extern'
string[3]="$(date +%Y_%m_%d-%H:%M:%S)"
string[4]='0.0.Beta'
string[5]='Velocity 64km/h'
string[6]='deionduensis'
string[7]='iehjnonduneo'
#STRING KEYS
string_key[1]='Author'
string_key[2]='Department'
string_key[3]='Date'
string_key[4]='Version'
string_key[5]='TITLE'
string_key[6]='Variant1'
string_key[7]='Variant2'
#
files=$(ls ./2VAR/ppt/slides/*xml ./2VAR/ppt/slides/_rels/*xml.rels ./2VAR/ppt/charts/*xml)
#
for ii in '1' '2' '3' '4' '5' '6' '7'; do
for file in $files; do
sed "s|\*$string_key[$ii]\*|$string[$ii]|g" $file > $file.tmp
mv $file.tmp $file
done
done
$string_key[$ii] 前后的 '*' 是可以的,它们是在 .xml 文件中的关键字周围。 结果是,什么都没有被替换。我试图用一个字符串(字符串键)替换 sed 中的变量,在我看来,问题是,变量 $string_key[$ii] 不会被扩展,但我不知道为什么..有任何想法吗?非常感谢!
【问题讨论】:
标签: variables sed double-quotes