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]}.

관련 정보