shell 问题汇总

1. 如果ret变量不止一行,直接使用

if [ -z $ret]; then

将报错,应使用双引号:

if [ -z "$ret" ]; then


2. 数序运算,使用$(()) 或 `expr * / *`:

$(( CURR-PREV ))

SLEEP_TIME=`expr $DBPC_INTERVAL / 2`


3. setsid 使用: 

http://www.cnblogs.com/forstudy/archive/2012/04/03/2427683.html

建立新会话:setsid()函数
  该调用进程是组长进程,则出错返回
    先调用fork, 父进程终止,子进程调用
  该调用进程不是组长进程,则创建一个新会话
    •该进程变成新会话首进程(session header)
    •该进程成为一个新进程组的组长进程。
    •该进程没有控制终端,如果之前有,则会被中断
组长进程不能成为新会话首进程,新会话首进程必定会成为组长进程...

setsid $DBPC_COMMAND  >/dev/null 2>&1 &


4. 变量替换,标准用法应加上大括号:

DBPC_LOG_FILE="$WORK_DIR/var/log/dbpc_${WEB_NAME}_${CLUSTER_NAME}.log"


你可能感兴趣的:(shell 问题汇总)