环境变量问题和shell脚本错误输出:
#!/bin/sh
/usr/bin/svn del $1 --username=jordan --password=justcall
/usr/bin/svn ci -m "delete a file $1 " --username=jordan --password=justcall
/usr/bin/svn update
echo "abc $?"
调试和正确的日志:
#!/bin/sh
export LANG=en_US.UTF-8
/usr/bin/svn del $1 --username=jordan --password=justcall
/usr/bin/svn ci -m "delete a file $1 " --username=jordan --password=justcall
/usr/bin/svn update 2>/tmp/log // 将错误日志定向到/tmp/log中
echo "abc $?" //显示上一条命令的执行结果,1为执行不成功
经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用
/tmp/test.sh > /tmp/test.log 2>&1
前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?
要解释这个问题,还是得提到文件重定向。我们知道>和<是文件重定向符。那么1和2是什么?在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。所以这里2>&1的意思就是将标准错误也输出到标准输出当中。
阅读(808) | 评论(0) | 转发(0) |