我正在尝试将变量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不会重新加载):
Checking user1
FOUND!
Checking user2
0 #< this should be 1 not 0 :(
为什么我的bash变量不会改变?
答案 0 :(得分:6)
您正在为每个用户重置reload
。如果找不到最后一个用户的文件,退出循环时reload
将为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