혼란스럽다면 죄송합니다.
이것이 스크립트가 수행해야 하는 작업입니다.
2개의 값을 입력합니다.
데이터베이스 서버 이름 =192.168.1.1
데이터베이스 스키마 =My_DB_schema
그런 다음 이 두 값이 존재할 때 일부 명령을 실행할 수 있는 방법이 필요합니다.
샘플은 다음과 같습니다
데이터베이스 서버 이름과 데이터베이스 스키마가 다음과 같은 경우
192.168.1.1
My_DB_schema
구현하다
command 1
command 2
Case 문을 사용해 보았지만 한 가지 조건만 테스트할 것 같습니다.
감사해요
답변1
제가 올바르게 이해했는지는 모르겠지만 여러 변수를 연결할 수 있습니다(예를 들어 값의 일부가 아니라는 것을 알고 있는 경우 일부 구분 기호 사용 :
).
예를 들어
SERVER=foo
DB_NAME=bar
case "$SERVER:$DB_NAME" in
foo:bar)
echo "foobar"
;;
foo:*)
echo "foo"
;;
*:bar)
echo "bar"
;;
esac
따라서 서버가 있고 foo
데이터베이스가 인 경우 bar
, 서버가 있고 foo
데이터베이스가 무엇이든 될 수 있는 경우, 서버가 무엇이든 될 수 있고 데이터베이스가 인 경우가 있습니다 bar
.
이런 방식으로 관심 있는 조합을 일치시킬 수 있어야 합니다.
SERVER
2개의 "조건"( 및 DB_NAME
), 3개, 4개 또는 원하는 만큼 사용할 수 있습니다 .
답변2
순진하게도 간단히 할 수 있습니다
db_name=...some-database-name...
db_host=...some-database-host...
if [ "$db_host" = '192.168.1.1' ] &&
[ "$db_name" = 'My_DB_schema' ]
then
command-1
command-2
fi
사용자 디렉토리방법을 보여줘두 변수를 하나로 연결하나의문자열을 확인한 다음 case
문을 사용하여 이 문자열을 테스트하는 방법을 알아봅니다. 나는 개인적으로 당신이 한 일을하지 않을 것입니다.이론적으로some:host
와 같은 값이 있을 수 있으며 my:name
문자열의 어느 부분이 어느 변수에서 나오는지 알 수 없습니다 some:host:my:name
.가장 일반적인 경우. 이는 변수 내용을 완전히 제어할 수 있는 상황에서 더 적합한 솔루션입니다.