LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1381|回复: 1

/etc/init.d/functions中的几个变量

[复制链接]
发表于 2008-7-29 21:58:33 | 显示全部楼层 |阅读模式
请问类似 ${COLUMNS:-},${CONSOLETYPE:-}中的 :- 派什么用?
按我理解,变量写成${COLUMNS}貌似就行了, 哪位高人指点下多出来的:-做何用处

[ -z "${COLUMNS:-}" ] && COLUMNS=80

[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="`/sbin/consoletype`"

if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
  . /etc/profile.d/lang.sh
fi

# Read in our configuration
if [ -z "${BOOTUP:-}" ]; then
  if [ -f /etc/sysconfig/init ]; then
      . /etc/sysconfig/init
  else
    # This all seem confusing? Look in /etc/sysconfig/init,
    # or in /usr/doc/initscripts-*/sysconfig.txt
    BOOTUP=color
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \\033[0;39m"
    LOGLEVEL=1
  fi
  if [ "$CONSOLETYPE" = "serial" ]; then
      BOOTUP=serial
      MOVE_TO_COL=
      SETCOLOR_SUCCESS=
      SETCOLOR_FAILURE=
      SETCOLOR_WARNING=
      SETCOLOR_NORMAL=
  fi
fi

if [ "${BOOTUP:-}" != "verbose" ]; then
   INITLOG_ARGS="-q"
else
   INITLOG_ARGS=
fi
 楼主| 发表于 2008-7-29 23:28:48 | 显示全部楼层
自问自答了,刚在ABS-Guide中搜到的:

${parameter-default}, ${parameter:-default}

    If parameter not set, use default.

       1 echo ${username-`whoami`}
       2 # Echoes the result of `whoami`, if variable $username is still unset.

    Note       

    ${parameter-default} and ${parameter:-default} are almost equivalent. The extra : makes a difference only when parameter has been declared, but is null.

       1 #!/bin/bash
       2 # param-sub.sh
       3
       4 #  Whether a variable has been declared
       5 #+ affects triggering of the default option
       6 #+ even if the variable is null.
       7
       8 username0=
       9 echo "username0 has been declared, but is set to null."
      10 echo "username0 = ${username0-`whoami`}"
      11 # Will not echo.
      12
      13 echo
      14
      15 echo username1 has not been declared.
      16 echo "username1 = ${username1-`whoami`}"
      17 # Will echo.
      18
      19 username2=
      20 echo "username2 has been declared, but is set to null."
      21 echo "username2 = ${username2:-`whoami`}"
      22 #                            ^
      23 # Will echo because of :- rather than just - in condition test.
      24 # Compare to first instance, above.
      25
      26
      27 #
      28
      29 # Once again:
      30
      31 variable=
      32 # variable has been declared, but is set to null.
      33
      34 echo "${variable-0}"    # (no output)
      35 echo "${variable:-1}"   # 1
      36 #               ^
      37
      38 unset variable
      39
      40 echo "${variable-2}"    # 2
      41 echo "${variable:-3}"   # 3
      42
      43 exit 0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表