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