Yanıtlar:
İlk örneğinizde, $((X+1))
X + 1 ifadesini değerlendirir ve sonuca genişler, bu da değişkene atanır.
İkinci örnekte, birer birer $((X=X+1))
artırılır X
( $((X++))
ayrıca geçerli ve daha kısadır, ancak kabuk tarafından mutlaka desteklenmez), daha sonra $X
null komutunun ilk argümanı olan yeni değerine genişler :
. Null komutu bağımsız değişkenlerini yok sayar ve sonuç atılır (yan etkilerle birlikte).
Şahsen üç (nispeten öznel) nedenlerden dolayı ilk formu tercih ederim:
Sadece bir komutun ortamını değiştiriyorsanız, ilk sürümü kullanmanız gerekir.
X=$((X+1)) /usr/local/bin/something
Bağımsız değişkenlere doğrudan değerlendirme eklemek için ikinci formu kullanmanız gerekir:
ls -la "file-$((X++))" # or ...
ls -la "file-$((X=X+1))" # for better compatibility
Bu istenen yan etkilere sahiptir, bir satır kaydeder ve oldukça açıktır.