Sh -c ile beklenmeyen Awk sonuçları


4

Awk kullanan bir komutu sudo etmeye çalışıyorum ve awk sh -c içinde farklı şekilde çalışıyor gibi görünüyor.

echo '1 2' | awk '{print $2}'

2

sh -c "echo '1 2' | awk '{print $2}'"

1 2

Bu neden oluyor?

Yanıtlar:


4

Çift tırnak kullanırsınız, bu nedenle $2değerlendirilir. İçteki tek tırnak işaretleri artık bunu etkilemiyor. Eğer $2boş, temelde aradığınız awk '{print }'. Sonuç olarak, giriş satırının tamamını çıktı olarak alırsınız.

Örneğin $ters eğik çizgi ile kaçabilirsiniz :\$2


@Michael: -xBir iz göstermek için kabuk seçeneğini kullanarak Maxi tarafından açıklanan davranışı görebilirsiniz :sh -xc "echo '1 2' | awk '{print $2}'"
Dennis Williamson
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.