명령줄에서 읽기가 작동하고 nohup을 통해 실행되는 스크립트에서는 실패합니다.

명령줄에서 읽기가 작동하고 nohup을 통해 실행되는 스크립트에서는 실패합니다.
read -t 600 -p 'Please specify the format in which you wish to export the file. csv/gz by entering (1/2)?' file_format 

위 명령은 명령줄에서 실행되지만 이를 통해 시작된 셸 스크립트에서 동일한 명령을 실행하면 nohup ./script_name with_paramas > out_file다음 오류와 함께 실패합니다.

copy_to_gds.sh: line 26: read: read error: 0: Bad file descriptor

답변1

이는 다음과 같이 재현할 수 있습니다.

$ nohup bash -c 'read var' | cat
nohup: ignoring input and redirecting stderr to stdout
bash: line 0: read: read error: 0: Bad file descriptor

맨페이지에는 다음과 같이 나와 있습니다 nohup(강조).

표준 입력이 터미널인 경우 다음에서 복사하세요.읽을 수 없는 파일.

nohup/dev/null열어서 이렇게 하세요그냥 써모드를 선택한 다음 표준 입력을 fd 0에 복사하여 리디렉션합니다. 따라서 EBADF( "Bad file descriptor") 오류가 발생합니다. 스크립트가 시도하기 때문입니다.읽다쓰기 전용 모드로 열린 파일에서:

$ read var 0>/dev/null
bash: read: read error: 0: Bad file descriptor

via 를 실행하는 스크립트에서 사용자 입력을 얻으려고 시도하는 것은 read거의 의미가 없으므로 nohup접근 방식을 다시 생각해야 할 것 같습니다.

관련 정보