मैं अपने कंटेनर के बाहर एक उपनाम बनाने की कोशिश कर रहा हूं जो कंटेनर के अंदर एक कमांड को कॉल करेगा:
CONTAINER="my-container-name"
container_echo() {
docker exec "$CONTAINER" bash -c "echo $@"
}
मैं यह आउटपुट देखता हूं:
$ container_echo "this is a test" second third
this is a test
तो यह मेरे तर्कों को सही ढंग से उद्धृत नहीं करता है, यह केवल पहला तर्क देता है। मैंने docker exec "$CONTAINER" sh -c "cp \"$@\""
को भी आजमाया है लेकिन मुझे एक Syntax error: Unterminated quoted string
त्रुटि मिलती है।
1 उत्तर
ऐसा करने का सबसे अच्छा तरीका बस होगा:
docker exec "$CONTAINER" echo "$@"
यदि आप वास्तव में इसे bash -c
के माध्यम से करना चाहते हैं, तो आपको प्रत्येक शब्द से बचना चाहिए और उन्हें एक स्ट्रिंग में जोड़ना चाहिए:
docker exec "$CONTAINER" bash -c "echo ${*@Q}"
संबंधित सवाल
नए सवाल
bash
बैश कमांड शेल के लिए लिखी गई लिपियों के बारे में प्रश्नों के लिए। त्रुटियों / वाक्यविन्यास त्रुटियों के साथ शेल स्क्रिप्ट के लिए, कृपया यहां पोस्ट करने से पहले शेलचेक प्रोग्राम (या वेब शेलचेक सर्वर पर https://shellcheck.net) के साथ उन्हें जांचें। बैश के इंटरैक्टिव उपयोग के बारे में सवाल स्टैक ओवरफ्लो की तुलना में सुपर उपयोगकर्ता पर ऑन-टॉपिक होने की अधिक संभावना है।