다음 내용을 포함하는 간단한 셸 스크립트인 myTest.sh가 있습니다.
#!/bin/sh
################### file begins########################
. ./backupConfig.p.properties
echo "success"
################### file ends########################
backupConfig.p.properties의 내용은 다음과 같습니다.
####################################### file starts ########################
# Prod database connection details
database_env="OXDB”
### <some comments> ####
softLocation=/opt/apps/ibm/
### <some comments> ####
tablesList="Tab1 Tab2 Tab3"
### <some comments> ####
####################################### file ends ########################
문제는 쉘 스크립트를 실행하려고 할 때마다 항상 오류가 발생한다는 것입니다.
$ sh myTest.sh
./backupConfig.p.properties: line 11: Tab1: command not found
success
위와 아래 줄의 주석을 제거하려고 시도했으며 이 줄에 공백이 있는지 확인했지만 문제를 해결하는 데 도움이 된 것은 아무것도 없습니다. 유일하게 효과가 있었던 것은 현재 위치에서 줄을 잘라내고 아래에 3줄을 붙여넣은 것뿐이었습니다. 누군가 이 오류가 발생하는 이유와 행 위치 변경이 작동하는 이유를 설명하는 데 도움을 줄 수 있습니까?
답변1
문제는 Database_env 행 끝에 있는 사기꾼 큰따옴표였음이 밝혀졌습니다. 쉘은 여는 큰따옴표와 그 뒤에 오는 큰따옴표를 확인합니다.
산화 데이터베이스"
그런 다음 줄 바꿈, 추가 텍스트 및 마지막으로 tablesList 행에서 예상되는 여는 따옴표로 "끝납니다".
다른 사람의 눈으로 이를 살펴보는 것 외에도, 이와 같은 향후 오류에 대한 유용한 팁은 Tab1
작성자가 이를 변수로 할당하려고 의도한 경우 오류 메시지 앞의 텍스트에 세심한 주의를 기울이는 것입니다. 쉘은 그것을 실행될 명령으로 취급했습니다.