다음 스크립트
#!/bin/bash
QUERY='select * from cdr;'
MYROWS=$("sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db '${QUERY}'")
나에게주세요
./bla.sh: row 35: sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;': file or directory not found
내가 직접 실행하면
sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;'
그렇다면 괜찮습니다. 오류 메시지에 표시되지 않는 따옴표에 일부 오류가 있는 것 같습니다. 작은 따옴표가 필요합니다.
select * from cdr;
내가 뭘 잘못하고 있는지에 대한 힌트를 주셔서 감사합니다!
답변1
내부에는 $(…)
일반적인 구문을 사용하는 쉘 명령이 있습니다. 명령으로 의도한 전체 조각을 큰따옴표로 묶으면 명령의 첫 번째 단어인 단일 단어로 구문 분석되므로 명령 이름으로 해석됩니다.
또한 인용이 $QUERY
올바르지 않습니다. 변수를 확장하려면 큰따옴표가 필요합니다.
MYROWS=$(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")