コマンド引数のロード/オーバーライドをサポートする「ヘルパー」スクリプトはありますか?

コマンド引数のロード/オーバーライドをサポートする「ヘルパー」スクリプトはありますか?

次のスクリプト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 ファイルのすべての値が使用されます。とは別に $topicfoobar代わりにと同じでしょう#。これを行うには、コマンドライン引数-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

おすすめ記事