shell脚本中判断上一个命令是否执行成功
创新互联公司专注于企业营销型网站建设、网站重做改版、牙克石网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站定制开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为牙克石等各大城市提供网站开发制作服务。
shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败。
结合if-else语句实现判断上一个命令是否执行成功。
示例如下:
if [ $? -ne 0 ]; then
echo "failed"
else
echo "succeed"
fi
或者:
if [ $? -eq 0 ]; then
echo "succeed"
else
echo "failed"
fi
一、区别:
1、内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。
2、外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。
二、如何判断。
在终端中输入 type 可以查看命令是内部命令还是外部命令。格式为:
type 要查看的命令
例如,我们要查看 cd 命令是否为内部命令,可以键入 type cd。从返回的结果可以看出, cd 是一个内部命令。
$type cd
cd is a shell builtin---此为内部命令,为shell内置
$type shutdown
shutdown is /sbin/shutdown 在文件系统的某个路径下有一个与命令名称相应的可执行文件
是于||是或看个例子ls
pwd||echo
1输出是[root@localhost
yum.repos.d]#
ls
pwd||echo
1CentOS-Base-163.repo
CentOS-Base.repo
CentOS-Media.repo/etc/yum.repos.d解释,先执行ls,如果ls执行成功,则执行pwd,pwd执行也成功,所以不执行echo
1,在看个例子
#
ls
tt||echo
1CentOS-Base-163.repo
CentOS-Base.repo
CentOS-Media.repo-bash:
tt:
command
not
found1同样先执行ls,如果成功则执行tt,但tt命令不存在,所以执行失败,这时就执行echo
1的操作