2013-05-03 20 views
6

sonra kod parçasını anlamaya çalışıyorum:Anlamı çift boru

. functions.sh || { : ; echo "Error while loading the specified file" >&2; exit 2; } 

Ben Belirtilen dosya bulunmadığı durumlarda parantez içinde kod denir olsun. Ama bu : ; ne anlama geliyor? Ayrıca, onu sildiğinizde, komut dosyası çalışmaz.

cevap

16

colon is null statement, dolayısıyla hiçbir şey yapmaz. Yarı kolon ends a list of commands.

Yukarıdakilerin neden yazılacağını bilmediğinden, temelde "hiçbir şey yapma, sonra echo yap" gibi basitleştirilmiş gibi görünüyor. Birinin kopyalayıp yapıştığı bagaj olabilir.

+0

Ancak şunu yazarsanız: '. functions.sh || {echo "Belirtilen dosya yüklenirken hata"> & 2; çıkış 2; } 'o zaman işe yaramıyor - çıkış komutu bir şekilde gerektiriyor sanırım. – aa007

+1

Nevermind .. {symbol'den sonra bir boşluk eklemeyi unuttum. Çok teşekkürler! :) – aa007

+11

'do_something || : '' set -e' AKA 'set -o errexit '' etkinleştirilmişse, betiğin tamamını bitirecek do_something'nın başarısızlığını görmezden gelmek bir deyimdir. –