我有此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对,
将提议的编辑与标题相匹配,因为用户发现了类似问题的用户。)