Açıklama:
$ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}'
0
1
2
3
4
düzgün çalışıyor
Kılavuzdaki {...;}
yerini alan bu sözdiziminin açıklamasını bulamadım ; do ...; done
.
Kılavuzda referans var mı? Bu hangi mermiler için düzgün çalışıyor?
Açıklama:
$ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}'
0
1
2
3
4
düzgün çalışıyor
Kılavuzdaki {...;}
yerini alan bu sözdiziminin açıklamasını bulamadım ; do ...; done
.
Kılavuzda referans var mı? Bu hangi mermiler için düzgün çalışıyor?
Yanıtlar:
{ ...; }
Zaten yerine kabul edildi do ...; done
yılında for
70'lerin Unix V7 içinde Bourne kabuğunun ilk sürümünde döngüler (bkz kaynak kodunu bildiğim kadarıyla belgelenmiş asla olsa da).
Bunların tümü ksh
(her ikisi de Bourne kabuğundan türetilen orijinal ve ksh93 yeniden yazılır), pdksh
¹ (ve türevleri), bash
(1989 başından itibaren) ve zsh
onu destekler. Ben böyle bir ash
türev bilmiyorum . yash
ya da değil yash
POSIX standardına yazılmıştır.
In zsh
, 1991'de 2.0 ile destek eklendi, ancak Bourne sözdiziminin ötesine geçen çoğu yapı için yeni kısa form aralığının bir parçası olarak. Sadece değil for i in 1 2; { ...; }
, for i in 1 2; any-command
ve (ve bunların varyantları). Ve orada belgelenmiştir ve tanıtıldığından beri olmuştur .
Bunun yanında AFAIK, zsh
sadece pdksh belgelerini (her ikisi için de for
ve her ikisi için select
) belgeler .
Gelince ((init; condition; action))
gelen formu, ksh93
ve tarafından kopyalanmış zsh
ve bash
.
Ne o ((...))
ne de { ...; }
yerine do ...; done
POSIX bulunmaktadır.
Ayrıca bkz . Bash'de "do" anahtar sözcüğünün döngüler için amacı nedir? Daha fazla for
döngü formları için.
Versions Daha eski sürümler ya da temel aldığı Forsyth kabuğu. 1994 yılında 5.1.1'de eklenmiştir ve muhtemelen neden orada belgelendiğini açıklamaktadır.