Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 循环Apache状态时出现问题_Arrays_Apache_Bash_Loops - Fatal编程技术网

Arrays 循环Apache状态时出现问题

Arrays 循环Apache状态时出现问题,arrays,apache,bash,loops,Arrays,Apache,Bash,Loops,你知道为什么这个循环返回目录列表结果吗 #!/bin/bash /usr/sbin/httpd fullstatus | while read line do echo $line done 71-0 - 0/0/410 . 7.74 47987 0 0.0 0.00 0.76 127.0.0.1 OPTIONS = bin boot dev error_log etc home lib lib64 lost+found media mnt nohup.out opt proc root s

你知道为什么这个循环返回目录列表结果吗

#!/bin/bash
/usr/sbin/httpd fullstatus | while read line
do
echo $line
done

71-0 - 0/0/410 . 7.74 47987 0 0.0 0.00 0.76 127.0.0.1 
OPTIONS = bin boot dev error_log etc home lib lib64 lost+found media mnt nohup.out opt proc root sbin selinux srv sys test tmp usr var HTTP/1.0
72-0 - 0/0/103 . 0.14 48912 0 0.0 0.00 0.13 127.0.0.1 
OPTIONS = bin boot dev error_log etc home lib lib64 lost+found media mnt nohup.out opt proc root sbin selinux srv sys test tmp usr var HTTP/1.0
它应该只返回apache状态

71-0 - 0/0/410 . 7.74 48231 0 0.0 0.00 0.76 127.0.0.1 
OPTIONS * HTTP/1.0
72-0 - 0/0/103 . 0.14 49157 0 0.0 0.00 0.13 127.0.0.1 
OPTIONS * HTTP/1.0

谢谢

,因为
*
会得到解释

记住:

总是引用你的变量 在这种情况下:

echo "$line"

因为
*
会被解释

记住:

总是引用你的变量 在这种情况下:

echo "$line"

因为这一行的输出

OPTIONS * HTTP/1.0
shell将“echo”参数中使用的“*”展开为当前目录中的文件列表。此脚本的输出将根据调用shell的$CWD而有所不同


转到任何选定的目录,键入“echo*”命令。

因为输出中有这一行

OPTIONS * HTTP/1.0
shell将“echo”参数中使用的“*”展开为当前目录中的文件列表。此脚本的输出将根据调用shell的$CWD而有所不同


转到所选目录,键入“echo*”命令。

Piotr已经回答了问题。只是一些补充。我建议在期间不要向
输送任何东西!它将创建另一个浪费资源的进程,如果您在
while
循环中定义变量,并且希望在循环外使用它,您将面临问题。我可能建议使用其他解决方案,如:

#!/bin/bash
while read line; do
echo "$line"
done < <(/usr/sbin/httpd fullstatus)
#/bin/bash
读行时;做
回音“$line”

完成
期间不要向
输送任何东西!它将创建另一个浪费资源的进程,如果您在
while
循环中定义变量,并且希望在循环外使用它,您将面临问题。我可能建议使用其他解决方案,如:

#!/bin/bash
while read line; do
echo "$line"
done < <(/usr/sbin/httpd fullstatus)
#/bin/bash
读行时;做
回音“$line”
完成<