2016-03-21 27 views
0

SSH üzerinden bir ekranda bazı komutları yürütüyorum. Bu mükemmel çalışıyor:Bash kaçan tırnak işaretleri

ssh [email protected] "screen -list; screen -r -d -X -S myscreen stuff $'echo here\n'" 

Ama şimdi oldukça yankı yerine, ben çift tırnak içeren sed komutu çalıştırmak çalışıyorum.

sed -i -r "s/( host:)(\w+)/\1test/" file.yml 

çift tırnak

Bash neden oluyor: sözdizimi hatası beklenmedik belirteç `veritabanı_adı yakın:'

nasıl düzgün bir sed için gerekli çift tırnak kaçacağız?

+1

Neden çift tırnaklara ihtiyacınız var? Bu sed komutunun etrafında tek tırnak ile çalışmalıdır. Genişlemek istediğin bir şey yok. –

+0

Tek tırnak işaretleri, malzeme komutunun çevresindeki tek tırnaklara müdahale eder. Burada echo'yu sed komutuyla değiştirmeye çalışıyorum. – Tim

+0

Tek tırnak içine, '' \ '' 'kullanarak tek tırnak içine alıntı yapabilirsiniz. –

cevap

0

Bunu yapmanın en kolay yolunun iki komutla ayrılması olduğunu buldum.

İlk önce komutu ekrana gönderin. Bir ters eğik çizgi ile şeyler komutundaki çift tırnaklardan kaçış. Komutu yürütmek için bir geri dönüş gönderin.

Bunu yapan $ not alın.

ssh [email protected] "screen -list; screen -r -d -X -S myscreen stuff $'\n'" 
         └─────────────────────────────────────────────────┘ 
                      └──┘