我一直在创建一个循环,它将读取平面文件,并将值插入到预先生成的emcli语句中。平面文件包含47个目标的target_name
和target_type
,以空格分隔。我尝试为每个目标更新的emcli
命令是:
emcli set_target_property_value -subseparator=property_records="@@" -property_records="target_name@@target_type@@Department@@dept_name"
我无法启动循环,因为我不知道如何通过文件读取它并将值更新到语句中。我没有太多的脚本编写经验。
答案 0 :(得分:1)
注意:解决方案基于以下假设。
根据您的评论,平面文件只有target_name
target_type
,如下所示。
平面文件a.txt
:
host1 hosts
host2 j2ee_application
host3 metatdata_repository
host4 EM
host5 Console
host6 Service
host7 oracle_oms_pbs
host8 weblogic_j2eeserver
Shell脚本:
然后,脚本只需要在遍历每一行时读取第一个和第二个字段,并使用emcli
和target_name
更新target_type
命令。
/\
语句中出现的"
添加了 echo
,以便正确打印整个命令/语句。
grep -v ^$
忽略任何空行。
cat a.txt |grep -v ^$ |
while read target_name target_type
do
echo "emcli set_target_property_value -subseparator=property_records=\"@@\" -property_records=\"${target_name}@@${target_type}@@Department@@dept_name\""
done
<强>结果:强>
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host1@@hosts@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host2@@j2ee_application@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host3@@metatdata_repository@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host4@@EM@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host5@@Console@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host6@@Service@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host7@@oracle_oms_pbs@@Department@@dept_name"
emcli set_target_property_value -subseparator=property_records="@@" -property_records="host8@@weblogic_j2eeserver@@Department@@dept_name"