bash 中的这一行有什么作用?参数-||脚本名称

bash 中的这一行有什么作用?参数-||脚本名称

我一直在阅读bash手册页,并阅读我的系统(CentOS 6.7)上的脚本,并在bash手册页中查找内容。这是一个很好的练习;例如,我了解了当位置参数中实际上没有选项时如何/etc/profile检查选项是否已设置(因此不起作用)。-igetopts

然而,下面这句话让我完全难住了;我在手册页中找不到任何bash解释它可以做什么的内容:

LESSOPEN="${LESSOPEN-||/usr/bin/lesspipe.sh %s}"

(这是 中一行的一部分/etc/profile.d/less.sh。)

我只是错过了一些东西吗man bash


是的,我曾是中缺少某些内容man bash: 在 的解释上方${parameter:-word},它说Omitting the colon results in a test only for a parameter that is unset. 这是缺少的部分。 (顺便说一句,“可能重复”的问题并未涵盖。)

事实上,分配的默认值是“或”运算符后面的脚本名称,这让我更加困惑! :)

答案1

这并不bash具体,但它自 1976 年以来就存在于 Bourne Shell 中。

检查 Bourne Shell 手册页:

http://schillix.sourceforge.net/man/man1/bosh.1.html

检查部分参数替换目前从第 7 页开始。

${parameter-word}        Use Default Values. If parameter is unset,
                         the  expansion  of  word is substituted;
                         otherwise,  the  value of parameter is substituted.

对于完整的概述,有:

                     | parameter nonnull | parameter null  | parameter unset
  ___________________|___________________|_________________|________________
  ${parameter:-word} | subst. parameter  | subst. word     | subst. word
  ___________________|___________________|_________________|________________
  ${parameter-word}  | subst. parameter  | subst. null     | subst. word
  ___________________|___________________|_________________|________________
  ${parameter:=word} | subst. parameter  | assign word     | assign word
  ___________________|___________________|_________________|________________
  ${parameter=word}  | subst. parameter  | subst. null     | assign word
  ___________________|___________________|_________________|________________
  ${parameter:?word} | subst. parameter  | error, exit     | error, exit
  ___________________|___________________|_________________|________________
  ${parameter?word}  | subst. parameter  | subst. null     | error, exit
  ___________________|___________________|_________________|________________
  ${parameter:+word} | subst. word       | subst. null     | subst. null
  ___________________|___________________|_________________|________________
  ${parameter+word}  | subst. word       | subst. word     | subst. null
  ___________________|___________________|_________________|________________

相关内容