입력(SQL 쿼리)과 출력을 로그 파일에 캡처하는 동안 셸 스크립트에서 일련의 쿼리를 실행하려고 합니다.
그러나 입력 쿼리는 출력과 함께 표시되지 않습니다. 로그 파일에는 출력만 캡처됩니다. 해당 입력과 함께 입력 쿼리를 캡처하는 방법이 있습니까?
설정했는데 echo on
여전히 작동하지 않습니다.
답변1
쉘 스크립트가 bash 또는 sh인 경우 -x
스위치를 shebang에 추가한 다음 스크립트를 실행할 수 있습니다. 일반적으로 쉘 스크립트 디버깅에 사용되며 실행하기 전에 다음 줄/명령을 인쇄합니다. 따라서 다음 예제 스크립트가 있으면 파일에 기록됩니다.logfile
#!/bin/bash -x
echo "Hello world!" >> logfile
echo "Second command!" >> logfile
그런 다음 스크립트를 실행하면 ./script 2>> logfile
로그 파일이 다음과 같이 표시됩니다.
+ echo 'Hello world!'
Hello world!
+ echo "Second command!"
Second command!
답변2
SQL 클라이언트는 결과를 표시하기 전에 쿼리를 에코하는 옵션을 제공할 수 있습니다. 예를 들어, 한 번 사용한 후에 이를 수행할 수 있는 옵션이 mysql
있습니다 .-v
입력하다:
echo "select 1 from dual" | mysql -v --table --user=u --password=p --host=h
산출:
--------------
select 1 from dual
--------------
+---+
| 1 |
+---+
| 1 |
+---+