什么是":?" 这个shell命令意味着什么?

kai*_* ho 0 linux bash shell

这是shell脚本:

#!/bin/bash

version="0.01";

fibonacci() {
    n=${1:?If you want the nth fibonacci number, you must supply n as the first parameter.}
    if [ $n -le 1 ]; then 
    echo $n
    else
    l=`fibonacci $((n-1))`
    r=`fibonacci $((n-2))`
    echo $((l + r))
    fi
}

for i in `seq 1 10`
do
  result=$(fibonacci $i)
  echo "i=$i result=$result"
done
Run Code Online (Sandbox Code Playgroud)

我对这一行感到困惑:

n=${1:?If you want the nth fibonacci number, you must supply n as the first parameter.}
Run Code Online (Sandbox Code Playgroud)

我寻找shell的手册,但什么都没有得到":?" 实际上意思是

谢谢

Ant*_*ioD 5

来自man bash:

${parameter:?word}
          Display Error if Null or Unset.  If parameter is null or unset, the  expansion  of  word
          (or  a  message  to that effect if word is not present) is written to the standard error
          and the shell, if it is not interactive, exits.  Otherwise, the value  of  parameter  is
          substituted.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,被检查的参数是$ 1(第一个位置参数)