Unix 쉘 스크립트에 대한 입력 값을 기반으로 테이블에서 특정 행을 삭제하고 싶습니다. 쉘 스크립트에서 연결하고 종료하고 있습니다.
이제 이 필드가 where 절에 하드코딩되어 있음을 알 수 있습니다.
이 값을 스크립트에 매개변수로 전달하려면 어떻게 해야 합니까?
#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 ""CONNECT TO DBNAME user USER using passwd""
db2 ""delete from table where field =\'abcdefghijklmn\'""
db2 ""CONNECT RESET""
답변1
DB2 CLP는 매개변수 표시문자의 사용을 지원하지 않습니다.
그러나 db2를 비대화식으로(즉, 쉘에서) 실행하는 경우 쉘 변수를 대체할 수 있습니다.
그러면 다음과 같은 내용이 남게 됩니다.
#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 "CONNECT TO DBNAME user USER using passwd"
db2 "delete from table where field = '${1}'"
db2 "CONNECT RESET"
명령줄에서 필드 값을 통해 호출 가능
./myksh.sh "delete-this-field"
하지만 기억하는 것이 중요합니다…
...이것은 단지 쉘 대체를 사용하는 것이므로 문자열 주위에 작은따옴표를 추가해야 합니다... [그리고] 문자열에 작은따옴표가 있는 경우 이는 더 복잡해집니다.