我遇到这种情况:
这里有一些file.conf:
<p>
<img src="http://justcuteanimals.com/wp-content/uploads/2016/10/baby-bear-pictures-cute-animal-pics.jpg
" alt="Magnolia" class="align-
center medium" />
<b>
<i>Magnolia</i>
</b>
is a large genus that contains over
200 flowering plant species. It is named after French botanist Pierre Magnol
and, having evolved before bees appeared, the flowers were developed to
encourage pollination by beetle.
</p>
我需要替换某些记录的值。这是我的剧本:
1stRecord value
2ndRecord value
3rdRecord value
当我运行它时,$ correct_ $ 1没有切换到$ correct_3rdRecord,因此我有这条记录:
correct_1stRecord='new1stValue'
correct_2ndRecord='new2ndValue'
correct_3rdRecord='new3rdValue'
function correct_record() {
sed -i 's/^$1 $(cat file.conf | grep -e "^$1" | awk '{print $2}')/$1 $correct_$1/" file.conf
}
correct_record 3rdRecord
我希望它是:
3rdRecord 3rdRecord
我试图将sed表达式的第二部分修改为/ $ 1 $(correct_ $ 1)然后显示命令correct_3rdRecord不存在,但是(1)它不是命令而是变量,(2)我确实在上面宣布了它。
答案 0 :(得分:0)
非常感谢消化。 我是这样做的:
function go() {
correct_userlogin='niza'
correct_useraddress='theCenter'
old_value=$(cat dwa | grep -e "^$1"| awk '{print $2}')
eval $(echo correct_var='$'"correct_$1")
echo $correct_var
sed -i "s/^$1 $old_value/$1 $correct_var/" dwa
}
go userlogin
go useraddress
结果我得到了: 记录是:
userlogin johny
useraddress out
以后的记录:
userlogin niza
useraddress theCenter
现在效果很好。 非常感谢