Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 由于While,Read命令无法按预期工作_Linux_Bash_Macos_Shell_Unix - Fatal编程技术网

Linux 由于While,Read命令无法按预期工作

Linux 由于While,Read命令无法按预期工作,linux,bash,macos,shell,unix,Linux,Bash,Macos,Shell,Unix,我面临一个奇怪的错误 我有一个包含一些输入的文件,根据这些输入,我请求用户确认并继续执行操作(如下所示) 由于函数中的读取行,实际的读取-p“[y/n]:”从上述测试文件而不是从STDIN中拾取输入 如果在读取行时删除cat测试|循环(这显然不是我想要的),程序工作正常 以前有没有人遇到过这个问题,或者有人能帮我解决这个问题 提前谢谢 使用不同的文件描述符(而不是管道)进行测试 while IFS= read -r line <&3; do ... done 3< t

我面临一个奇怪的错误

我有一个包含一些输入的文件,根据这些输入,我请求用户确认并继续执行操作(如下所示)

由于函数中的读取行,实际的读取-p“[y/n]:”从上述测试文件而不是从STDIN中拾取输入

如果在读取行时删除cat测试|循环(这显然不是我想要的),程序工作正常

以前有没有人遇到过这个问题,或者有人能帮我解决这个问题


提前谢谢

使用不同的文件描述符(而不是管道)进行
测试

while IFS= read -r line <&3; do
    ...
done 3< testing

当IFS=read-r line时,使用不同的文件描述符(而不是管道)进行
测试

while IFS= read -r line <&3; do
    ...
done 3< testing

当IFS=read-r行时,请使用www.shellcheck.net检查您的代码,该代码有几个问题,网站提供了有用的信息。请注意链接副本的接受答案中的注释,该注释指向一个更好的答案。@ArigatoManga,“不是问题”,前提是您知道自己的输入是什么。例如,如果您的输入文件有一个
*
,那么您将获得当前目录中的文件列表,作为单个参数传递给
test
@ArigatoManga,…。类似地,如果您的输入行是
hello world
,那么有效的test命令将完全等同于
[“hello”“world”=“hi”]
,无效语法(只允许在
=
的左侧有一个参数)。请显示您正在使用的确切代码,以便我们重现该语法错误。请使用www.shellcheck.net检查您的代码,它有几个问题,网站提供了有用的信息。请注意链接副本的公认答案中的注释,该注释指向一个更好的答案。@ArigatoManga,“不是问题”,前提是您知道自己的输入是什么。例如,如果您的输入文件有一个
*
,那么您将获得当前目录中的文件列表,作为单个参数传递给
test
@ArigatoManga,…。类似地,如果您的输入行是
hello world
,那么有效的test命令将完全等同于
[“hello”“world”=“hi”]
,无效语法(在
=
的左侧只允许有一个参数)。请显示您正在使用的确切代码,以便我们重现该语法错误。@CharlesDuffy我尝试了重复问题中指定的所有答案,但第一个答案不起作用(如注释中指定的)第二个是给出错误,`syntax error near unexpected token
}done;}3下面是我尝试的代码(为了方便,我删除了文件中的所有其他内容),
#/bin/bash while IFS=read DC_ip您在
read
命令的重定向中缺少
&
,并且使用
感谢它正在工作。@CharlesDuffy我尝试了重复问题中指定的所有答案,但第一个答案不起作用(如注释中所指定的),第二个给出了错误,`意外标记附近的语法错误
}'已完成;}3下面是我尝试的代码(为了方便,我删除了文件中的所有其他内容),
#/bin/bash当IFS=read DC_ip时,您在
read
命令上的重定向中缺少
&
,使用
感谢它正在工作。。