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