我在bash脚本中找到了以下命令:
git blame $NOT_WHITESPACE --line-porcelain "${2-@}" -- "$file"
这${2-@}
是什么意思?尝试,它返回第二个参数,如果它不存在则返回“@”。 According to the documentation,${2:-@}
也应该这样做。我试了一下,确实也是这样。有什么不同?它在哪里记录?该手册页似乎没有说明这种表示法。
答案 0 :(得分:8)
来自Bash hackers wiki - parameter expansion:
$ {PARAMETER:-Word}
$ {PARAMETER-WORD}
如果参数PARAMETER未设置(从未定义)或为null (空),这个扩展为WORD,否则扩展为该值 PARAMETER,好像只是$ {PARAMETER}。 如果省略: (冒号),如第二种形式所示,仅使用默认值 当参数未设置时,而不是在它为空时。
echo "Your home directory is: ${HOME:-/home/$USER}." echo "${HOME:-/home/$USER} will be used to store your personal data."
如果HOME未设置或为空,则每次要打印某些内容时 有用的,您需要将该参数语法放在。
中#!/bin/bash read -p "Enter your gender (just press ENTER to not tell us): " GENDER echo "Your gender is ${GENDER:-a secret}."
它将打印出“你的性别是一个秘密”。当你不进入 性别。请注意,默认值用于扩展时间,它是 未分配给参数。