web-dev-qa-db-ja.com

シェルスクリプトでの `:-`の意味

素晴らしいシェルスクリプトの最後でこれを確認しましたが、ここではログインを理解できません。これは、長いコマンドの場合は速攻であるためです。

spark ${@:-`cat`}

このスクリプト の最後に表示されます。何か案は?

+たとえそれが遅くても、コードの完全なセグメントにそれを拡張する人のためのマーク(説明のために良い)

24
whoami

これは、man bashでのパラメータ置換の最初の特別なケースです。

${parameter:-Word}
デフォルト値を使用します。 parameterが設定されていないかnullの場合、Wordの展開が置換されます。それ以外の場合は、parameterの値が置換されます。

あなたが言及した場合、ユーザーがコマンドラインで引数を提供し、それらが使用されるか、ユーザーは後で標準入力にそれらを入力するように求められます。

25

Afaik :-は基本的に:$@ OR `cat`を使用します($@`cat`に設定せずに)...

だからいくつかの変化する置換え...

編集:だからそれはあなたにある種のインタラクティブな入力を与えます...

これが小さなターミナルテストです:

localhost:~ _druu$ echo ${@:-`cat`}
hello
world
;)
^\hello world ;)
localhost:~ _druu$ 
5
david.wosnitza