Kabuk değişkeni $ _ beklendiği gibi davranmıyor


11

Hat sayısının farklı olmasının nedeni nedir?

$ head -n 100000 ./access.log > ./data/log.sample
$ cat $_ | wc -l
1933424

1
Ayrıca bash için Özel Parametreler'i ziyaret edin
Pandya

1
Etkileşimli bir bağlamda, !$istediğinizi yapar, ancak IIRC betiğinde çalışmaz.
zwol

@zwol: Evet. Bu konuda bir soru sordum .
Tezgah

teeKomut dosyanızı komutunuzda kullanmalısınız .
Diti

Yanıtlar:


26

$_, ./access.logson çalıştırılan komutun son argümanı olarak genişliyor , değil ./data/log.sample.

Yani aslında satır sayısını görüyorsunuz ./access.log.

Yeniden yönlendirme ( >), headkomut başlamadan önce kabuk tarafından yapıldığı için komutun bir parçası değildir head. Böylece $_sizinle olsun ./access.log.


Gönderen man bash:

($ _, alt çizgi.) Kabuk başlangıcında, ortam veya bağımsız değişken listesinde geçirildiği sırada yürütülen kabuk veya kabuk komut dosyasını çağırmak için kullanılan mutlak yol adına ayarlayın. Daha sonra, genişletmeden sonra önceki komutun son bağımsız değişkenine genişler . Ayrıca, bu komuta aktarılan ortama yürütülen ve yerleştirilen her komutu çağırmak için kullanılan tam yol adına ayarlanır. Postaları kontrol ederken, bu parametre posta dosyasının adını tutar.


1
@ J.Chomel Şaka yaptığınızı bile düşündüğünüz bir hata olduğundan emin değilim.
chepner
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.