运行SED通过环境变量



我有此SED命令,该命令从外壳运行

   /bin/sed -i -e '/^['"9876"']/ r /etc/asterisk/tmp_'"9876"'.txt' /etc/asterisk/sip_peers.include

从sh脚本运行它不起作用:

#!/bin/bash
peers=/etc/asterisk/sip_peers.include
tmp=/etc/asterisk/tmp_$ext.txt
var=`cat < $tmp`
printenv > /etc/asterisk/zprintenv.txt
echo $tmp $ext > /etc/asterisk/zoutput.txt
/bin/sed -i -e '/^['"$ext"']/ r /etc/asterisk/tmp_'"$ext"'.txt' /etc/asterisk/sip_peers.include

$ ext是一个环境变量,当我将printenv传递给文本文件时,它仍然存在。另外$ ext变量将传递给output.txt用于测试目的。

sip_peers.include,在[]之后将插入/etmc/asterisk/tmp_jumext.txt的值:

[9876]
qualify=yes
nat=yes
call-limit=4
....

输出zoutput.txt:

/etc/asterisk/tmp_9876.txt 9876

Zprintenv.txt的摘要:

contacts=1
vm=1
ext=9876
emergency_trunk=
callerid_override=
enduser_company_contacts=0
.....

输出$ tmp:

;mac=e02f6d613554
;model=spa504G

请看一下,从几个小时开始我找不到错误。非常感谢

引用op评论:
这是一个运行的时间问题。
该脚本是从gui调用的,并且在执行脚本后,存储 include.include。因此SED无法处理不存在的文件。

(这似乎对其他人来说可能很有趣。因此,我通过引用ops评论的答案来制作Q/A对,
将提议的编辑与标题相匹配,因为用户发现了类似问题的用户。)

最新更新