'%20%EA%B7%BC%EC%B2%98%EC%97%90%20%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
구성 파일에 저장된 정보를 사용하는 쉘 스크립트를 만들었습니다. 제가 직면하고 있는 문제는 쉘 스크립트에서 사용하기 위해 구성 파일에 저장된 특정 값을 전달하려고 할 때 구문 오류가 발생한다는 것입니다.
예를 들어:
config.conf
host=localhost
user=user
password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password)
db_name=database
script.sh
# 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
그리고 당신은 안전해야합니다.