read -t 600 -p 'Please specify the format in which you wish to export the file. csv/gz by entering (1/2)?' file_format
上面的命令从命令行运行,但是当从通过它启动的 shell 脚本运行相同的命令时,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
尝试read
从运行 via 的脚本获取用户输入没有什么意义nohup
,所以我想您必须重新考虑您的方法。