반응형
셸 스크립트에서 mariadb 암호의 특수 문자를 이스케이프하는 방법
mariadb에 로그인하기 위해 셸 스크립트를 작성해야 합니다.셸 스크립트가 ini 파일에 특수 문자(공백, !@)가 포함된 암호 하나를 읽었습니다.
운영체제는 Ubuntu 18.04입니다.
ini 파일은 다음과 같습니다.
user=xxx-xxx-xxx
password=xxx /xxx /xx/ !\@
셸 스크립트는 다음과 같습니다.
#!/bin/bash
baseDir="$(cd "$(dirname "$0")" && pwd)"
iniPath="$baseDir/backup.ini"
echo "iniPath is $iniPath"
dbUser="$(grep 'user' $iniPath | cut -d '=' -f 2)"
echo "user is $dbUser"
dbPassword="$(grep 'password' $iniPath | cut -d '=' -f 2)"
echo "password is $dbPassword"
mysql -h localhost -u $dbUser -p'$dbPassword'
명령줄에 mysql -h localhost -u xxxxxxx -p'xxx /xxx /xxx/!@' 명령을 입력하면 성공적으로 기록됩니다.그러나 셸 스크립트를 실행하면 항상 사용자에 대한 액세스가 거부됩니다.
제안할 것이 있습니까?감사해요.
사용해 보셨습니까: mysql -h localhost -u $dbUser -p'echo $dbPassword? (특수 문자 '는 esckey 왼쪽 상단 모서리 아래 키보드처럼 미국에 있으며, 뒤로 아포스트로피처럼 보입니다.) 암호가 있는 변수가 실행되기 전에 mysql 명령에 올바르게 "인쇄"되지 않은 것 같습니다.다른 방법으로는 -p"$dbPassword"를 사용하는 것이 좋습니다.
FWIW, 문제는 셸이 변수를 단일 따옴표로 둘러싸인 문자열로 보간하지 않는다는 것입니다.Honza가 지정한 대로 이중 따옴표가 작동합니다.
자세한 내용은 Bash의 단일 따옴표와 이중 따옴표의 차이를 참조하십시오.
언급URL : https://stackoverflow.com/questions/54282700/how-to-escape-special-characters-of-mariadb-password-in-shell-script
반응형
'programing' 카테고리의 다른 글
| 오라클에서 두 번 이상 발생한 기록을 검색하는 방법은 무엇입니까? (0) | 2023.07.22 |
|---|---|
| maven Failsafe가 java.lang에서 실패합니다.클래스 정의를 찾을 수 없음 오류 (0) | 2023.07.22 |
| 스크립트에 --verbose 또는 -v 옵션을 구현하는 방법은 무엇입니까? (0) | 2023.07.22 |
| Oracle에서 지정된 행을 삭제하는 최적의 방법 (0) | 2023.07.22 |
| 아이폰을 C++로 프로그래밍할 수 있습니까? (0) | 2023.07.17 |