- 论坛徽章:
- 18
|
本帖最后由 bikkuri 于 2014-07-02 08:35 编辑
谢谢您的指点,但是现在又有一个新问题:
您的程序中处理的enb.max和ue8342.upd是在同一个地方,但是实际使用的情况是enb.max在Linux服务器上,而ue8342.upd和更新程序在UE移动设备上,所以需要通过一个ssh来远程执行更新命令。
我在UE移动设备上,手工执行下面这条更新命令,是可以得到期望的正确结果的。- awk "NR==FNR{upd_enb=\$6;upd_record=\$0;upd_val=gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF);next}!found && +gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF)<+upd_val{print upd_record;found=1}\$6!=upd_enb;END{if(!found)print upd_record}" ue8342.upd enb.max > enb.max.tmp
复制代码 执行下面这个更新程序也可以得到期望的正确结果。- #!/bin/sh
- ssh user@host.com 'awk "NR==FNR{upd_enb=\$6;upd_record=\$0;upd_val=gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF);next}!found && +gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF)<+upd_val{print upd_record;found=1}\$6!=upd_enb;END{if(!found)print upd_record}" ue8342.upd enb.max > enb.max.tmp'
复制代码 但是我执行以下更新程序,则执行时$ue,$em都为空,导致更新失败。- #!/bin/sh
- number=8342
- ue=ue$number.upd
- em=enb.max
- ssh user@host.com 'awk "NR==FNR{upd_enb=\$6;upd_record=\$0;upd_val=gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF);next}!found && +gensub(/\[([0-9]+).*/,\"\\\\1\",1,\$NF)<+upd_val{print upd_record;found=1}\$6!=upd_enb;END{if(!found)print upd_record}" $ue $em > $em.tmp'
复制代码 请问更新程序应该怎么写才能做到远程更新Linux服务器上的enb.max文件呢?
谢谢。
Herowinter 发表于 2014-06-30 20:16
回复 15# bikkuri
忘了考虑和测试边界情况了,有可能存在遍历完enb.max前面都没发现
一个合理的插入位置 ... |
|