次のスクリプトsub.shがあります。
#!/bin/sh
. ./sub.conf
echo $topic
mosquitto_sub -u $user -P $password -h $server -t $topic
関連設定ファイルsub.conf:
topic="#" #-t
user="mqtt" #-u
password="mqttpass" #-P
server="127.0.0.1" #-h
私のスクリプトを呼び出し、sub.confファイルで使用される渡された値をオーバーライドする方法を見つけたいと思います。例:
./sub.sh -t foobar
.conf ファイルのすべての値が使用されます。とは別に $topic
foobar
代わりにと同じでしょう#
。これを行うには、コマンドライン引数-t
をにマップする必要があります$topic
。これを書くと、私が書くことよりも多くのコードがすぐに変わることができることに気づきました。私は誰かが車輪を再発明するのではなく、同様のものを書いたと思いました。
ベストアンサー1
私は次のような本当に良いスクリプトジェネレータのウェブサイトを見つけました。アルバス。 「テンプレート」と入力すると、スケルトンスクリプトが作成されます。私の例では、~/sub.conf
デフォルト値を使用してユーザーのホームディレクトリにファイルを作成します。
topic="#"
user="mqtt"
password="mqttpass"
server="127.0.0.1"
次に、argbashに移動します。テンプレート作成ページ次のテンプレートを提供してください。
#!/bin/bash
# version="0.1"
#
# This is an optional arguments-only example of Argbash potential
#
# ARG_OPTIONAL_SINGLE([user], [u], [optional argument help msg])
# ARG_OPTIONAL_SINGLE([Password], [P], [optional argument help msg])
# ARG_OPTIONAL_SINGLE([server], [s], [optional argument help msg])
# ARG_OPTIONAL_SINGLE([topic], [t], [optional argument help msg])
# ARG_HELP([The general script's help msg])
# ARGBASH_GO
# [ <-- needed because of Argbash
echo "Value of --user: $_arg_user"
echo "Value of --Password: $_arg_password"
echo "Value of --server: $_arg_server"
echo "Value of --topic: $_arg_topic"
# ] <-- needed because of Argbash
次に、「今すぐスクリプトを作成」ボタンをクリックします。これにより、ダウンロードできるスクリプトが生成されます。このスクリプト内で以下を検索してください。
# THE DEFAULTS INITIALIZATION - OPTIONALS
_arg_user=
_arg_password=
_arg_server=
_arg_topic=
次のように変更してください。
# THE DEFAULTS INITIALIZATION - OPTIONALS
. ~/.sub.conf
_arg_user=$user
_arg_password=$password
_arg_server=$server
_arg_topic=$topic
. ~/.sub.conf
構成ファイルの値は、ファイルで指定された変数にロードされます。次の行は、テンプレートに指定する各コマンドライン引数を入力します。スクリプトに渡されるすべての値はこれらのデフォルト値をオーバーライドします。echo "Value of --user: $_arg_user
必要に応じて、これらの明細を削除できます。スクリプトの最後に、次のパラメータを使用してください。
mosquitto_sub -u $_arg_user -P $_arg_password -h $_arg_server -t $_arg_topic