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
접근 방식을 다시 생각해야 할 것 같습니다.