내 로컬 컴퓨터의 원격 서버에서 Timesten SQL 쿼리를 실행하려고 합니다. 쿼리는 스크립트 내부에 있으며 데이터베이스에 연결할 수 있지만 문제는 쿼리 필드에 있습니다.
이것은 내 스크립트 runttquery.sh입니다.
#!/bin/bash
cmd=$1
ssh dba@rhost << "EOF"
ttIsql "dsn=rhostdsn";
select * from table1 where id='$cmd';
EOF
매개변수 "testid"를 전달하여 위 스크립트를 실행하면,
./runttquery.sh testid
SQL 쿼리의 $cmd는 내가 전달한 "testid" 매개변수로 대체되지 않으며 원격 서버에서 0개의 결과를 얻습니다.
SQL 쿼리의 id 값을 스크립트에 전달된 매개 변수로 바꾸면 됩니다.
답변1
실수로 $cmd 변수를 교체했고, EOF(heredoc 제한 문자열) 주위의 따옴표를 제거하고 $cmd 주위에 {}를 추가했습니다. 이제 다음이 제대로 작동합니다.
#!/bin/bash
cmd=$1
ssh dba@rhost << EOF
ttIsql "dsn=rhostdsn";
select * from table1 where id='${cmd}';
EOF