2017-03-15 20 views
2

を渡すsedの稼働私はシェル、それは動作しませんshスクリプトからそれを実行しているは、環境変数

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

から実行されている作品このsedコマンドを持っています変数であり、printenvをテキストファイルに渡すときにはまだ存在します。また、$ ext変数はテストの目的でoutput.txtに渡されます。

/etc/asterisk/tmp_$ext.txtの値は[]の後に挿入されsip_peers.include:

[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 

私は時間から間違いを見つけられません。見てください。 ありがとうございます

+0

ここで 'ext'変数の値は何ですか?ここには存在せず、これを試した入力ファイルを共有できますか? – Inian

+0

こんにちは、私は私の質問を更新しました。 – calabash

+0

これが解決されました。実行時の問題です。スクリプトはGUIから呼び出され、スクリプトが実行された後にsip_peers.includeファイルが格納されます。 sedはこのファイルに書き込めません。困ったことに助けてくれてありがとう – calabash

答えて

0

引用OPコメント:
実行時の問題です。
スクリプトはguiから呼び出され、のスクリプトが実行された後に、ファイルsip_peers.includeがに格納されます。したがって、sedは存在しないファイルを処理できません。

(これは他の人にとって面白いかもしれないユースケースのようですが、私はOPのコメントから回答を引用してQ/Aのペアを作成しています、
同様の問題です。)