2

Autoconf 文档建议使用此代码段以实现可移植性:

      # Create a temporary directory $tmp in $TMPDIR (default /tmp).
      # Use mktemp if possible; otherwise fall back on mkdir,
      # with $RANDOM to make collisions less likely.
      : ${TMPDIR=/tmp}
      {
        tmp=`
          (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
        ` &&
        test -n "$tmp" && test -d "$tmp"
      } || {
        tmp=$TMPDIR/foo$$-$RANDOM

        (umask 077 && mkdir "$tmp")
      } || exit $?

我不明白第一行:

为什么它以 a 开头:

为什么TMPDIR在那之后使用变量?

4

2 回答 2

2

: ${TMPDIR=/tmp} 表示:

: 是 bash 中的空命令,但如果 TMPDIR 的内容为空,shell 将 /tmp 分配给 TMPDIR 变量

于 2013-05-05T05:26:51.263 回答
0

": ${TMPDIR=/tmp}" 行正在调用":" shell built-in,它什么也不做,只有一个参数 - 结果是 "${TMPDIR=/tmp}"参数扩展

此参数扩展将“/tmp”分配给 TMPDIR 变量,如果它未设置(之前未设置任何内容,甚至是空字符串),然后扩展为 TMPDIR 的值,该值被“:”内置忽略。

于 2013-05-05T09:22:02.903 回答