在Bash中,`$ {1 + / $ 1}`是什么意思?

Ram*_*hum 1 linux bash

我正在用此行阅读Bash脚本:

FOO=${1+/$1}
Run Code Online (Sandbox Code Playgroud)

这条线是做什么的?

Tom*_*ech 5

/使它看起来稍微混乱比它,但是这只是一个例子${foo+bar},它扩展到bar如果$foo设置。

在这种情况下,变量是$1,传递给脚本或函数的第一个位置参数。

example () {
  echo "${1+/$1}"
}

example     # outputs nothing
example ''  # outputs "/"
example foo # outputs "/foo"
Run Code Online (Sandbox Code Playgroud)

表格中总结了这些参数扩展。的规则${parameter+word}是:

  • 设置且不为空:替代 word
  • 设置为空:替代 word
  • 未设置:替换为null

因此,要直接回答你的问题,FOO=${1+/$1}受让人/$1FOO$1设置,否则FOO设置为null(空字符串)。