Bashスクリプトでパラメータ値をハードコードする方法

Bashスクリプトでパラメータ値をハードコードする方法

ホストサーバーからターゲットサーバーにディレクトリを移動するプロセスを自動化しています。これは単純なscpプロセスであるにもかかわらず、パラメータのうち2つをパラメータ化したいのですが、引き続き悩んでいます。

ユーザーが送信元および宛先サーバーの詳細(IPまたはサーバー名)を入力したくありません。代わりに、ユーザーはサーバーの略語のみを入力する必要があります。

たとえば、A1~A8、B1~B5、C1~C7など、20台のサーバーがあります。 bashスクリプトの入力には、source_server target_server Directory_nameという3つのパラメーターが必要です。

たとえば、

script_name A7 C2 directory_name

Bashスクリプトでは、次のようなものが必要です。

if $1 = A1 then source = server_IP
else
if $1 = A2 then source = server_IP

...など

もう$2(目標)です。

次に、SCP コマンドのソース値を使用します。

答え1

連想配列を使用します。

declare -A servers
servers=([a1]=serverA1 [a2]=serverA2 [c1]=serverC1)
src="${servers[$1]}"
dst="${servers[$2]}"

ここで、連想配列にはserversサーバーのマスターリストが含まれています。$1ソースサーバーの短い名前なので、長い名前を使用してソースサーバーにアクセスできます${servers[$1]}

関連情報