← 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.