web-dev-qa-db-ja.com

変数の文字をbash変換します

Collectdnagiosカスタムチェックスクリプトをbashで作成しています。私が抱えている問題は、nagiosがホスト名をHost.name.domainとして表示しているのに、collectdがWSPファイルをHost_name_domainとして保持していることです。私の質問は、nagios(Host.name.domain)から取得したホスト名をcollectd形式(Host_name_domain)に変換する変数を作成する方法です。

これは、変換が発生する必要がある部分です。したがって、WSP_PATHは、変数$ NHOSTでホスト名のcollectd形式を提供します。

WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
3
mYzk

Sedを使用する:

$ NHOST="Host.domain.tld"
$ NHOST=$(echo $NHOST | sed 's/\./-/g')
$ WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
$ echo $WSP_PATH
/var/lib/carbin/whisper/ctd/Host-domain/uptime/uptime.wsp

上記のように、のすべてのインスタンスが。 -に置き換えられます

考え直してみますが、$ NHOST変数(これを表示するように編集されています)に対してこの(sed)操作を実行する方がおそらく理にかなっています。

4
GeoSword

Bashには必要な機能が組み込まれています(古いバージョンでない限り):

WSP_PATH=/var/lib/carbon/whisper/ctd/${NHOST//./-}/uptime/uptime.wsp
13
guest