AIX 관련 SQLite/STDIN 난제

AIX 관련 SQLite/STDIN 난제

저는 직장에서 SQlite를 가지고 놀았습니다. 특히 sqlite3 명령줄 도구를 사용하여 파일 대신 stdin을 허용하려고 했습니다. 충분히 쉬운 것 같습니다. Linux에서는 다음과 같은 명령을 실행할 수 있습니다.

echo 'test' | sqlite3 test.db '.import /dev/stdin test'

불행하게도 우리 회사의 컴퓨터는 AIX(5 & 6)를 실행하고 있으며 내가 아는 한 가상 파일 /dev/stdin에 상응하는 파일은 없습니다. 임시 파일을 사용하여 AIX에서 작동하는 동등한 명령을 함께 해킹했습니다.

echo 'test' | cat - > /tmp/blah ; sqlite3 test.db '.import /tmp/blah test' ; rm /tmp/blah

이제, 그렇습니까?필요STDIN을 사용하려면? 이 임시 파일이면 충분하지 않나요? 그럴지도 모르지만, 나는 더 나은 unix-fu를 가진 사람이 더 우아한 해결책을 갖고 있기를 바랐습니다.

메모:내가 가져오려는 데이터는 STDOUT을 통해서만 제공됩니다.에코 '테스트'명령이 전부입니다.

설명- 위에 표시된 파이프의 오른쪽에 있는 명령만 제어할 수 있습니다. 데이터가 처리되고 stdin/stdout을 통해 내 명령으로 전달됩니다. echo 'test' 명령은 예시일 뿐입니다.

답변1

실제로 Bash를 사용하고 있고 AIX가 프로세스 대체(플랫폼에 따라 다르다고 생각함)를 지원한다면 다음이 도움이 될 수 있습니다.

데모:

cat <(echo 'test')

당신의 명령:

sqlite3 test.db '.import '<(echo test)' test'

답변2

위의 답변을 바탕으로:

... | sqlite3 test.db 'import '<(cat -)' test'

내 시스템에서 이것을 테스트했는데 원하는 대로 작동하는 것 같습니다.

답변3

STDIN 해킹이 해당 플랫폼에서 작동하지 않으면 임시 파일 대신 명명된 파이프를 사용하는 것은 어떻습니까? 두 프로그램의 관점에서 보면 파일처럼 작동하지만 실제로 디스크에 쓰고 읽지는 않습니다.

관련 정보