Bash 스크립트에는 다음이 있습니다.
target="-h1.2.3.4 -P3307"
user="-uusername"
pass="-ppassword"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
3307 대신 포트 3306에 연결된다는 점을 제외하면 정상적으로 작동합니다. 어떻게 하면 올바르게 읽을 수 있나요 ${target}
?
target
두 개의 개별 변수 로 분리할 필요가 없습니다 .
수동으로 실행하면
mysql -h1.2.3.4 -P3307 -uusername -ppassword
그러면 잘 작동합니다. 이것이 바로 제가 달성하고 싶은 것입니다. 이는 MySQL이 -P3307
기본값을 무시하고 사용하는 것과 거의 같습니다 3306
.
또한 모든 것을 변수에 넣으려고 시도했지만 그것도 작동하지 않았습니다(포트, 사용자 이름 및 비밀번호가 무시되었습니다).
문제는 MySQL이 $target
값을 하나로 해석한다는 것입니다. 포트와 호스트를 전환하면 다음을 얻습니다.
target="-P3307 -h1.2.3.4"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
나는 얻다:
Unknown suffix ' ' used for variable 'port' (value '3307 -h1.2.3.4')
mysql: Error while setting value '3307 -h1.2.3.4' to 'port'
그렇다면 이것이 MySQL 문제인지 Linux 문제인지 알 수 없습니다.