← nitronium.dev

zsh'da bash array sözdizimi çalışmıyor: ${arr//-/ } hata veriyor

2026-06-25
macOS'ta varsayılan shell zsh. Bash scriptleri için yazılan array sözdizimi zsh'da hata üretiyor.

Sorun: git vault'undaki dosyaları döngüyle taşımak için bu kodu yazdım:

`bash
for f in *.md; do
stem="${f%.md}"
parts=(${stem//-/ }) # bash'ta çalışır, zsh'da hata
date_dir="${parts[0]}-${parts[1]}-${parts[2]}"
...
done
`

zsh çıktısı:
`
mkdir: illegal option -- 2
`

${stem//-/ } ifadesi zsh'da array'e dönüşmüyor; parts[0], parts[1] gibi indexleme de farklı davranıyor (zsh 1-indexed).

Çözüm: Bash yerine Python kullan. Hem daha okunabilir hem platform bağımsız:

`python
parts = stem.split('-', 3) # ["2026", "06", "25", "freelancer"]
date_dir = '-'.join(parts[:3])
market = parts[3]
`

Claude Code'un Bash tool'u zsh çalıştırıyor. Karmaşık string işleme için doğrudan Python subprocess daha güvenli.