【发布时间】:2016-07-04 17:08:56
【问题描述】:
我正在编写“启动更新”bash 脚本,但在 Konsole 中打开它会返回:
~~~~~~-~~~~~@~~~~~~-~~~~~-~~-~~~~~~~~-~~~:~/Documents$ ./update.sh
./update.sh: 3: ./update.sh: [True=True]: not found
~~~~~~-~~~~~@~~~~~~-~~~~~-~~-~~~~~~~~-~~~:~/Documents$
这里是代码(screenshot):
#!/bin.sh
upd=True
while [$upd=True]
do
echo "Updateing..."
end=0
sudo apt-get -yV update
if [$?=0 -o $end=0]
then
end=1
sudo apt-get -yV upgrade
if [$?=0 -o $end=1]
then
end=2
sudo apt-get -yV autoremove
if [$?=0 -o $end=2]
then
end=3
sudo apt-get -yV autoclean
if [$?=0 -o $end=3]
then
end=4
sudo apt-get -yV dist-upgrade
if [$?=0 -o $end=4]
then
end=5
sudo apt -yV update
if [$?=0 -o $end=5]
then
end=6
sudo apt full-upgrade
if [$?=0 -o $end=6]
then
upd=False
fi
fi
fi
fi
fi
fi
fi
done
exit 0
【问题讨论】:
-
您应该将代码作为文本发布在问题中。
-
同意 \@SurvivalMachine 所说的。
-
在此处发布代码之前学习使用shellcheck.net。 并且不要发布屏幕截图! ;-) 祝你好运。
-
您应该使用
if [[ "$upd"="True" ]](引号以防止出现空变量问题) -
@shellter 谢谢!它(shellcheck.net)帮助很大,但仍然要求 sudo 输入密码,如果您或其他人知道如何处理,那就太好了。这个想法是在启动时更新而不必处理 sudo