我正在写一个shell脚本,这里是片段..
sudo service httpd restart --- ( 1)
if [ $? -eq 0 ]; then
# Now configure php.ini using sed command
sudo sed -i 's_;date.timezone =_date.timezone = "Asia/Kolkata"_' /etc/php.ini
# Now restart the httpd server again
sudo service httpd restart ---- This statement throws error
当我在脚本上面运行时,我在第二个Address already in use: make_sock: could not bind to address
语句中收到错误sudo service httpd restart
。
我怀疑是因为第一次sudo service httpd restart
运行时,在完成之前完全第二次'sudo service httpd restart'运行。
那么我怎样才能测试如果第一个sudo service httpd restart
完成则只执行其余的代码。
我希望我能理解......
由于
答案 0 :(得分:3)
忘记[
给予:
if sudo service http restart; then
# stuff
if sudo service http restart; then
echo ok
else
# error handling for second service failure
fi
else
# error handling for first failure
fi
如果返回状态为零,则命令为true,否则为false。 Shell命令也必须在调用下一行之前终止。
原则上,service
可以在后台完成任务并在完成之前退出。在实践中,它并不是因为那会让事情搞砸。
答案 1 :(得分:0)
不确定命令背景。如果是这样,您可以检查您的命令是否仍在进程列表中找到:
// ... your code ...
c=1
while [[ c -gt 0 ]]
do
c=`ps l | grep -c "service httpd restart"`
done
service httpd restart