2014-01-31 3 views
1

저는 bash로 작성된 프로그램을 mysql 데이터베이스와 상호 작용하기 위해 Microsoft SQL Server로 전환했는데 지금은 매우 이상한 문제가 있습니다. 아래의 코드는 mysql과 함께 작동합니다. Microsoft SQL Server를 사용하여 성공적으로 카운트를 가져 왔음을 알 수 있습니다. 내 "echo $ id"는 23과 같은 값을 보여 주지만 문제는 bash가 "구문 오류 : 루프 변수가 잘못되었습니다"라는 오류가 발생합니다. 나는 왜 그것을하고 있는지 혼란 스럽다 23 정수 값입니다. 도와주세요.SQL 서버가있는 bash의 루프 변수가 잘못되었습니다.

id="`tsql -S Server\\SqlServerName -U Databas_Name -P Password -o q <<EOF 
use numbers 
go 
SELECT COUNT(*) FROM lotsa_numbers 
go 
quit 
EOF`" 

echo $id 
for ((c=0; c=>$id-1; c++)) 
do 
     echo $c 
done 
+1

호기심을 벗어났습니다. , 왜'c <= $ id'보다는 for 루프를 이런 식으로하고 있습니까? – BroSlow

+0

또한 좁히려면 for 루프 앞에'id = $ (echo $ id)'를 넣으십시오 (앞뒤 공백 등을 잘라 버릴 것입니다 ...) – BroSlow

+0

BroSlow, 에코를 게시하면 도움을 주셔서 감사합니다 해결책으로 $ id 문제 내가 필요한 것을 정확하게 수행 했으므로 확인란을 선택하고 크레딧을받을 자격이 있습니다. 또한 0이라는 지수를 다루고 있기 때문에 -1을가집니다. – Cfoote7

답변

1

문제는 앞뒤 공백 문자 일 수 있습니다. 이를 처리 할 수있는 방법은 변수를 인용하지 않음으로써 bash를 사용하는 것입니다 (어떤 경우에는 문제가 발생할 수 있지만 정수를 얻으려고하는 경우는 그렇지 않습니다).

id=$(echo $id) 
관련 문제