我正在尝试构建一个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]不会被扩展,但我不知道为什么..有任何想法吗?非常感谢!
答案 0 :(得分:2)
要引用数组成员,请使用以下语法:
${string_key[$ii]}
或
${string_key[ii]}
$string_key[$ii]
相当于$string_key'['$ii']'