运行sed传递环境变量

时间:2017-03-15 15:40:44

标签: shell variables sed path

我有这个sed命令可以从shell运行

Optional<UIView>

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

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

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

sip_peers.include,其中/etc/asterisk/tmp_$ext.txt的值将在[]后插入:

#!/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

输出zoutput.txt:

[9876]
qualify=yes
nat=yes
call-limit=4
....
来自zprintenv.txt的

片段:

/etc/asterisk/tmp_9876.txt 9876

输出$ tmp:

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

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

1 个答案:

答案 0 :(得分:0)

引用OP评论:
这是一个运行时问题 该脚本是从gui调用的,文件sip_peers.include在执行脚本后存储。所以sed无法处理不存在的文件。

(这似乎是一个可能对其他人感兴趣的用例。所以我通过引用OP评论的答案来制作Q / A对。 将建议的编辑与标题相匹配,以便由具有类似问题的用户找到。)