如何在 bash 脚本中对参数值进行硬编码

如何在 bash 脚本中对参数值进行硬编码

我正在自动化将目录从主机服务器移动到目标服务器的过程。尽管这是一个简单的scp过程,但我陷入了想要参数化其中 2 个参数的困境。

我不希望用户输入源和目标服务器详细信息(IP 或服务器名称)。而是希望用户仅输入服务器的缩写。

例如,我有 20 个服务器,分别是 A1 到 A8、B1 到 B5、C1 到 C7 我希望 bash 脚本的输入有 3 个参数,即 source_server target_server directory_name

例如:

script_name A7 C2 directory_name

在 bash 脚本中我想要类似的东西:

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

... 等等

同样,2 美元(目标)。

然后使用 SCP 命令中的 source 值。

答案1

使用关联数组:

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

在这里,关联数组servers包含您的服务器主列表。由于$1是源服务器的短名称,因此您可以使用 访问源服务器的长名称${servers[$1]}

相关内容