Awk çift tırnak içine alındığında çalışmıyor


11

Bu komut çalışmıyor:

ssh $HOST "ls -l | awk '{print $1}'"`

Yukarıdaki komut göz ardı edilir awk. Bence çift tırnaklar olabilir mi?

Ayrıca, awk içine başka bir çift tırnak seti nasıl ekleyebilirim?

yani:

ssh $HOST "awk '{print $1 "*"}' /some_file"

Alıntılardan kaçmayı denedim, bunu bile denedim:

ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"

başarısız.

Yanıtlar:


19

Değişken enterpolasyon çift tırnak içinde yapılır, bu yüzden olabileceğini düşündüğüm şey: yazdığınızda ssh $HOST "ls -l | awk '{print $1}'", kabuğunuz (yerel bilgisayarınızda, SSH istemcisini çalıştırdığınız yer) $1çift ​​tırnak içinde görür ve onunla değiştirir. $1boş olacak olan değişkenin değeri . Bunun $1çift ​​tırnak içindeki tek tırnak içine yerleştirildiğini algılayamıyor . Yani uzak sunucuya gönderilen rüzgar

ls -l | awk '{print }'

temelde buna eşdeğer

ls -l | cat

yani sadece çıktısını yazdırır ls -l.

Çözüm: $ters eğik çizgi ile kaçmak ,

ssh $HOST "ls -l | awk '{print \$1}'"

Haha, bu çok basitti! Sadece doğru baktım! Bu tam olarak istediğimi yaptı. ssh $ HOST "ls -l | awk '{print \ $ 1 \" * \ "}'" Çok teşekkürler!
Nick
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.