下面测试文件拷贝是否正常,如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息。注意错误信息中 'basename $0'则打印脚本名
如果脚本错误退出,一个好习惯是现实脚本名并将之定向到标准错误中。用户应该知道产生错误的脚本名。
- #!/bin/bash
-
#ifcp.sh
-
if cp myfile myfile.bak
-
then
-
echo "good copy"
-
else
-
echo "'basename $0':error could not copy the files" >&2
-
fi
- ywx@ywx:~/Desktop/linux_shell$ ./ifcp.sh
-
cp: cannot stat `myfile': No such file or directory 系统提示错误
-
'basename ./ifcp.sh':error could not copy the files 自己输出打印信息
注意,文件可能没有找到,系统也产生本身的错误信息,这类错误信息可能与输出混在一起,既然已经现实系统错误信息获知脚本失败,就没必要现实两次。要出去系统产生的错误
和系统输出,只需简单的将标准错误和输出重定向即可。修改脚本为: >/dev/null 2 >&1
- #!/bin/bash
-
#ifcp.sh
-
if cp myfile myfile.bak >/dev/null 2>&1
-
then
-
echo "good copy"
-
else
-
echo "'basename $0':error could not copy the files" >&2
-
fi
- ywx@ywx:~/Desktop/linux_shell$ ./ifcp.sh
-
'basename ./ifcp.sh':error could not copy the files
脚本运行时,所有输出包括错误重定向至系统垃圾堆
阅读(1406) | 评论(0) | 转发(0) |