如何确认shell执行成功??

sh/bash/dash/ksh/zsh等Shell脚本
回复
liucheng1513
帖子: 62
注册时间: 2010-09-08 18:17

如何确认shell执行成功??

#1

帖子 liucheng1513 » 2011-03-24 9:05

下面是perl里的一段代码,在shell下有没有类似的代码能知道shell命令是否成功执行?
#== 修改权限 ==
$mycmd="chown -R root.root $local_dir";
$ret=system("$mycmd");
if ($ret != 0) {
LOG("修改权限失败1;错误原因为: $!");
}else{
LOG("修改权限成功1");
}
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何确认shell执行成功??

#2

帖子 eexpress » 2011-03-24 10:09

bash?看$?就是。
● 鸣学
liucheng1513
帖子: 62
注册时间: 2010-09-08 18:17

Re: 如何确认shell执行成功??

#3

帖子 liucheng1513 » 2011-03-24 18:21

实在不明白怎么写,能举个例子吗??
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 如何确认shell执行成功??

#4

帖子 fnan » 2011-03-24 18:33

kose3@kose3-desktop:~$ if ($(sudo chown -R kose3 /media/b5ece2dc-d4c8-48b0-8049-140b495a4328/));then echo "change owner ok.";fi
[sudo] password for kose3:
change owner ok.
kose3@kose3-desktop:~$ if ($(sudo chown -R kose3 /media/b5ece2dc-d4c8-48b0-8049));then echo "change owner ok.";fi
chown: cannot access `/media/b5ece2dc-d4c8-48b0-8049': No such file or directory
kose3@kose3-desktop:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 如何确认shell执行成功??

#5

帖子 fnan » 2011-03-25 17:52

好像很少人会动手试试,一试就会清楚了:
kose3@kose3-desktop:~$ if (sudo chown kose3 /media/b5ece2dc-d4c8-48b0-8049-140b495a4328/ 2>/dev/null);then echo ok;else echo not ok;fi
ok
kose3@kose3-desktop:~$ sudo chown kose3 /media/b5ece2dc-d4c8-48b0-8049-140b495a4328/
kose3@kose3-desktop:~$ if [[ $? = "0" ]];then echo ok;else echo fail;fi
ok
kose3@kose3-desktop:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 如何确认shell执行成功??

#6

帖子 tusooa » 2011-04-01 17:44

代码: 全选

if $mycmd ; then echo ok ; else echo fail ; fi

代码: 全选

] ls -ld //
chengmoYS
帖子: 125
注册时间: 2007-10-22 22:40

Re: 如何确认shell执行成功??

#7

帖子 chengmoYS » 2011-04-11 13:42

shell里,命令是否执行成功,就看该命令执行后的返回值$?,如果该值为0,就表示该命令执行成功,非0则失败。

如果是个shell脚本,$?返回的是最后一条命令的执行结果。所以,在shell里为了确认各个命令是否执行成功,
会经常执行完命令,就检查$?,确保命令都是执行成功的。这样来确认脚本也是执行成功的。
回复