Birçok kabuk senaryosunu kırdım ve bazen en basit şeyler beni şaşırtmaya başladı. Bugün :
(colon) bash yerleşimini kapsamlı olarak kullanan bir senaryo ile karşılaştım .
Dokümantasyonunda basit yeterince görünüyor:
: (a colon) : [arguments]
Argümanları genişletmenin ve yönlendirmeleri gerçekleştirmenin ötesinde hiçbir şey yapmayın. Dönüş durumu sıfır.
Ancak bunu daha önce sadece kabuk genişlemesinin gösterilerinde kullanıldığını gördüm. Karşılaştığım senaryoda kullanım durumu bu yapıyı geniş ölçüde kullandı:
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
Aslında yüzlerce ahmak vardı, ama onlar sadece aynıydı. Yukarıdaki basit yapı dışında hiçbir girdi / çıktı yönlendirmesi mevcut değil. Kodda daha sonra bir dönüş değeri kontrol edilmez.
Bunu "ya da hiçbir şey yapma" yazan işe yaramaz bir yapı olarak okuyorum. Bu hileleri "veya hiçbir şey yapmama" ile bitirmek hangi amaca hizmet edebilir? Hangi durumda bu yapı || :
, tüm örneklerden uzaklaşmaktan farklı bir sonuca neden olur ?
:
alternatif olarak kullanmaktrue
. Belkierrexit
de ayarlanmıştır ve yazar bazı komutların çıkış durumuyla ilgilenmez.