Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Bash 巴什旺';不改变变量值_Bash - Fatal编程技术网

Bash 巴什旺';不改变变量值

Bash 巴什旺';不改变变量值,bash,Bash,我正在尝试将变量reload从0更改为1,您可以在下面的代码中看到: for d in /home/*; do u="${d##*/}"; reload=0; echo "Checking $u"; if [ -e /home/$u/info/reload.php ]; then echo "FOUND!"; reload=1; fi done echo $reload; if [ $reload = 1 ]; then service apache2 r

我正在尝试将变量
reload
0
更改为
1
,您可以在下面的代码中看到:

for d in /home/*; do
  u="${d##*/}";
  reload=0;
  echo "Checking $u";
  if [ -e /home/$u/info/reload.php ]; then
    echo "FOUND!";
    reload=1;
  fi
done
echo $reload;
if [ $reload = 1 ]; then
  service apache2 reload
fi
问题是它不会被更改,
$reload
仍保持为
0
,输出类似于此(apache不会被重新加载):

检查用户1
建立
检查用户2
0#<这应该是1而不是0:(

为什么我的bash变量不会更改???

您正在为每个用户重置
重新加载
。如果没有找到最后一个用户的文件,则退出循环时,
重新加载
将为
0

建议的修复(带有缩进以便于阅读):


find/home/-type f-name reload.php | egrep-q'/home/*/info/reload.php'&&service apache2 reload
Ah,whoopsie:o,感谢您的帮助:D,我会尽快接受这个答案。设置reload后,您不妨
中断
=1@glennjackman:我认为这是一种性能改进,但它会改变他列出了包含脚本的主目录,因此忽略了这一点。
Checking user1
FOUND!
Checking user2
0 #< this should be 1 not 0 :(
#!/usr/bin/env bash

reload=0
for d in /home/*; do
    u="${d##*/}"
    echo "Checking $u";
    if [ -e /home/$u/info/reload.php ]; then
        echo "FOUND!"
        reload=1
    fi
done
echo $reload
if [ $reload -eq 1 ]; then
    service apache2 reload
fi