जब डबल कोट्स के अंदर अवाक काम नहीं करता है


11

यह आदेश काम नहीं करता है:

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

ऊपर से आदेश की अनदेखी awk। मुझे लगता है कि यह दोहरे उद्धरण चिह्नों के कारण हो सकता है?

इसके अलावा, मैं जाग के अंदर दोहरे उद्धरण चिह्नों का एक और सेट कैसे जोड़ूंगा?

अर्थात:

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

मैंने उद्धरणों से बचने की कोशिश की, मैंने भी यह कोशिश की:

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

बिना सफलता के।

जवाबों:


19

परिवर्तनीय प्रक्षेप दोहरे उद्धरणों के भीतर किया जाता है, इसलिए यहां मैं जो सोचता हूं वह हो सकता है: जब आप टाइप करते हैं ssh $HOST "ls -l | awk '{print $1}'", तो आपका शेल (आपके स्थानीय कंप्यूटर पर, जहां आप एसएसएच क्लाइंट चला रहे हैं) $1दोहरे उद्धरणों के भीतर देखता है और इसे बदल देता है चर का मान $1, जो रिक्त होगा। यह पता लगाने में सक्षम नहीं है कि $1दोहरे उद्धरण चिह्नों के भीतर एकल उद्धरणों में निहित है। तो क्या रिमोट सर्वर पर भेजा जा रहा है

ls -l | awk '{print }'

जो मूल रूप से समतुल्य है

ls -l | cat

इसका मतलब है कि यह सिर्फ आउटपुट प्रिंट करता है ls -l

समाधान: $एक बैकस्लैश के साथ बच ,

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

हा, यह तो बहुत आसान था! मैं बस इसके माध्यम से देखा! यह वही है जो मैं चाहता था। ssh $ HOST "ls -l। awk '{प्रिंट \ $ 1 \" * \ "}" "एक गुच्छा धन्यवाद!
निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.