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 $?

最初の行がわかりません:

で始まるのはなぜ:ですか?

TMPDIRその直後に変数が使用されるのはなぜですか?

4

2 に答える 2

2

: ${TMPDIR=/tmp} の意味:

: bash では null コマンドですが、TMPDIR の内容が null の場合、シェルは /tmp を TMPDIR 変数に割り当てます

于 2013-05-05T05:26:51.263 に答える
0

「: ${TMPDIR=/tmp}」行は、単一の引数 (「${TMPDIR=/tmp}」パラメーター展開の結果) を使用して、何もしない「:」 shell built-inを呼び出しています。

このパラメータ展開は、「/tmp」を TMPDIR 変数に割り当て、それが設定されていない場合 (空の文字列であっても以前に何も設定されていない場合)、組み込みの「:」によって無視される TMPDIR の値に展開します。

于 2013-05-05T09:22:02.903 に答える