2023年11月27日发(作者:)
shell脚本的错误检测总结
shell脚本的错误检测多种⽅法总结
⼀、通过使⽤命令或选项,检测错误:
正常运⾏:
[root@ping ~]# cat case_
#!/bin/sh
echo -ne "确定清空回收站 y/n?n:"
read answer
answer=`echo $answer | tr [a-z] [A-Z]`
if [ $answer = Y ]
then
rm -rf /root/.local/share/Trash/files/*
echo "回收站已清空!"
else
mv /root/.local/share/Trash/files/* /root/桌⾯/
echo "回收站⽂件已恢复!"
[root@ping ~]# sh -x case_
+ echo -ne '确定清空回收站 y/n?n:'
确定清空回收站 y/n?
:+ read answer
y
++ echo y
++ tr '[a-z]' '[A-Z]'
+ answer=Y
+ '[' Y = Y ']'
+ rm -rf /root/.local/share/Trash/files/ss.2
+ echo '回收站已清空!'
回收站已清空!
注释:
每⼀条可执⾏脚本命令前都会有⼀个“+”,当⼀条命令出现⼦级命令时会出现两个,即“++”。
案例⼆:
运⾏时添加选项-v,冗余模式。
[root@ping ~]# sh -v case_
#!/bin/sh
echo -ne "确定清空回收站 y/n?n:"
确定清空回收站 y/n?
:read answer
y
answer=`echo $answer | tr [a-z] [A-Z]`
echo $answer | tr [a-z] [A-Z]
[root@ping ~]# cat case_
#!/bin/sh
set -x
echo -ne "确定清空回收站 y/n?n:"
read answer
answer=`echo $answer | tr [a-z] [A-Z]`
if [ $answer = Y ]
then
rm -rf /root/.local/share/Trash/files/*
echo "回收站已清空!"
else
mv /root/.local/share/Trash/files/* /root/桌⾯/
echo "回收站⽂件已恢复!"
fi
[root@ping ~]# sh case_
+ echo -ne '确定清空回收站 y/n?n:'
确定清空回收站 y/n?
:+ read answer
y
[root@ping ~]# sh case_
echo -ne "确定清空回收站 y/n?n:"
确定清空回收站 y/n?
:read answer
y
answer=`echo $answer | tr [a-z] [A-Z]`
echo $answer | tr [a-z] [A-Z]
if [ $answer = Y ]
then
rm -rf /root/.local/share/Trash/files/*
echo "回收站已清空!"
else
mv /root/.local/share/Trash/files/* /root/桌⾯/
echo "回收站⽂件已恢复!"
fi
回收站已清空!
注意:
[root@ping ~]# cat case_
#!/bin/sh
debug=3
test $debug -gt 0 && echo "Debug is on"
echo -ne "确定清空回收站 y/n?n:"
read answer
test $debug -gt 1 && echo "你的选择是:$answer"
answer=`echo $answer | tr [a-z] [A-Z]`
if [ $answer = Y ]
then
rm -rf /root/.local/share/Trash/files/*
echo "回收站已清空!"
test $debug -gt 2 && echo "你的选择是:$answer"
else
mv /root/.local/share/Trash/files/* /root/桌⾯/
echo "回收站⽂件已恢复!"
test $debug -gt 2 && echo "你的选择是:$answer"
fi
[root@ping ~]# sh case_
Debug is on
确定清空回收站 y/n?
[root@ping ~]# cat case_
#!/bin/sh
alert(){
if [ $? -eq 0 ]
then
continue
else
echo "WARNING:这条命令未执⾏成功!"
fi
}
echo -ne "确定清空回收站 y/n?n:"
read answer
answer=`echo $answer | tr [a-z] [A-Z]`
alert
if [ $answer = Y ]
then
rm -rf /root/.local/share/Trash/files/*
alert


发布评论