मैं अपने कंटेनर के बाहर एक उपनाम बनाने की कोशिश कर रहा हूं जो कंटेनर के अंदर एक कमांड को कॉल करेगा:

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 त्रुटि मिलती है।

0
Boris 14 जिंदा 2021, 21:03

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा करने का सबसे अच्छा तरीका बस होगा:

docker exec "$CONTAINER" echo "$@"

यदि आप वास्तव में इसे bash -c के माध्यम से करना चाहते हैं, तो आपको प्रत्येक शब्द से बचना चाहिए और उन्हें एक स्ट्रिंग में जोड़ना चाहिए:

docker exec "$CONTAINER" bash -c "echo ${*@Q}"
2
that other guy 14 जिंदा 2021, 21:10