私はbash
マニュアルページと私のシステム(CentOS 6.7)のスクリプトを読み、bash
マニュアルページで内容を見つけました。これは良い練習でした。たとえば、/etc/profile
位置引数に実際にオプションがない場合にオプションが設定されているかどうかを確認する方法を学びました(これはうまくいきません)。-i
getopts
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.
(ところで、「冗長性」の質問は扱いません。)
割り当てられたデフォルト値が "or"演算子の後のスクリプト名であるという事実は、私をさらに混乱させます! :)
答え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 ___________________|___________________|_________________|________________