Bash: 예상치 못한 마커 ")" 근처에 구문 오류가 있습니다.

Bash: 예상치 못한 마커 ")" 근처에 구문 오류가 있습니다.

구성 파일에 저장된 정보를 사용하는 쉘 스크립트를 만들었습니다. 제가 겪고 있는 문제는 쉘 스크립트에서 사용하기 위해 구성 파일에 저장된 특정 값을 전달하려고 할 때 구문 오류가 발생한다는 것입니다.

예를 들어:

구성 파일

host=localhost
user=user
password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password)
db_name=database

스크립트 파일

# Load config file TODO: make this more secure
source /path/to/config.conf

# MySQL database dump
mysqldump --lock-tables -h $host -u $user -p $password $db_name > dbbackup_`date +"%Y%m%d"`.bak

스크립트를 실행하려고 하면 다음과 같은 일이 발생합니다.

$ bash script.sh
Syntax error near unexpected token `)'
`password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4='

이 문제는 무작위로 생성된 비밀번호에 사용된 특정 문자와 관련된 것 같습니다. 나는 $password따옴표를 사용해 보았고 그것이 작동하지 않을 때 구성 파일에 저장된 실제 비밀번호로 동일한 작업을 수행했지만 다시 성공하지 못했습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변1

가능한 한 자주 큰따옴표를 사용하십시오.

config.conf는 다음과 같아야합니다

host="localhost"
user="user"
password="GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4="
db_name="database"

그리고 당신의 명령은 다음과 같습니다:

mysqldump --lock-tables -h "${host}" -u "${user}" -p"${password}" "${db_name}" > dbbackup_`date +"%Y%m%d"`.bak

당신은 안전해야합니다.

관련 정보