2014-03-29 6 views
0

저는 sqlite3을 처음 사용합니다. 그러나 저는 그것에 매달리기 시작했습니다. 데이터베이스에서 항목을 제거하는 간단한 명령 줄 기반 도구를 만들고 있습니다. 사용중인 명령은 대화 형 모드에서 잘 작동합니다.bash 스크립트의 Sqlite3 다중 인수

sqlite3 db.sqlite 
SQLite version 3.7.12 2012-04-03 19:43:07 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> SELECT computer_name FROM machine WHERE serial_number = "C02JT0XXXXXX"; 
MacBook01 

하지만 쉘 명령에 넣어하려고 할 때 작동하지 않습니다 : 나는 다른 인수가 사용할 때

$ sqlite3 db.sqlite "SELECT computer_name FROM machine WHERE serial_number = "C02JT0XXXXXX";" 
Error: no such column: C02JT0XXXXXX 

이상한 것은이 작업을 수행 그것은 다음과 같습니다 :

두 번째 인수가 1 문자보다 길면 실패합니다. 나는 다른 몇 가지 시도뿐만 아니라 그들은 나에게 같은 오류를 주었다.

내가 뭘 잘못하고 있니?

감사합니다.

답변

2

bash에서 첫 번째 표현식은 SELECT computer_name FROM machine WHERE serial_number = C02JT0XXXXXX;이됩니다. 실제로는 따옴표가 제거됩니다. 이는 수치 비교이기 때문에 id = 1에 대해서는 정상입니다. "C02JT0XXXXXX" 문자열의 경우 문제가 발생합니다. 작은 따옴표 사용해보기 :

sqlite3 db.sqlite 'SELECT computer_name FROM machine WHERE serial_number = "C02JT0XXXXXX";' 
1

이미이 인용문을 사용하고 있습니다.

sqlite3 db.sqlite 'SELECT computer_name FROM machine WHERE serial_number = "C02JT0XXXXXX";' 

sqlite3 db.sqlite 'SELECT computer_name FROM machine WHERE serial_number = "'"C02JT0XXXXXX"'";'