Tırnak içindeki joker karakterler


32

Bu kolay olacak, ama hatıralarımda, kabuk komut dosyası yazarken, çift tırnak kullanmak, genelleme ve değişkenleri genişletmeye izin verecek.

Ancak aşağıdaki kodda:

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

Bu sonucu alıyorum:

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

Böylece tek tırnak işareti glob VE değişken genleşmesini önler ancak çift tırnak işareti yalnızca değişken genleşmeye izin verir ve küreselleşmeye izin vermez?

Herhangi bir alıntı deseni bulabilir miyim?

Yanıtlar:


26

Haklısın: globbing tek veya çift tırnak içinde çalışmaz. Bununla birlikte, çift tırnaklı dizelerle küreselleşme enterpolasyonu yapabilirsiniz:

$ echo "merhaba dünya" * .sh "elveda dünya"
merhaba dünya [dosyaların listesi] güle güle dünya

6
Veya hatta echo "$hello and $goodbye".*(değişken genişlemeleri, boşlukları ve aynı "kelimedeki" bir
küreyi karıştırın

1
Globbing bu durumda işe yaramadı echo /path/to/file/*${variable}. Enterpolasyonlu bir e-posta eklerken nasıl glob yapabilirim?
CMCDragonkai

2
@CMCDragonkai echo "$FOLDER_PATH"/*.extension benim için iyi çalışıyor, kabul edilen cevabın aksine, "ve arasındaki boşlukları kaldırmak zorunda kaldım *. Umarım yardımcı olur.
LostBalloon

@ CMCDragonkai, @LostBalloon Boşluk olabilecek değişkenlerle globları kullanmak istediğimde aşağıdaki deseni kullanıyorum:(cd "$FOLDER_PATH" && echo *.extension)
Steven Darnell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.