বাশ স্ক্রিপ্টে পাইথন অনেলাইনার চালান


6

নিম্নলিখিতটি আমার পাইপ স্ক্রিপ্টের অংশ হিসাবে চালাতে চাই পাইথন ওয়ান-লাইনারটি নীচে

python -c "from xml.dom.minidom import parse;dom = parse('/path/to/pom.xml');print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == 'version']"

(pom.xML একটি উন্মুক্ত POM এক্সএমএল ফাইল)

আমি কমান্ডের ফলাফলটি ভেরিয়েবল এমভিএন_ভিয়ারকে নির্ধারিত করতে চাই

এটি আমার বেস স্ক্রিপ্ট:

WS="/path/to"
PY_GET_MVN_VERS="from xml.dom.minidom import parse;dom = parse(\'${WS}/pom.xml\')\;print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == \'version\']"

funcion test_mvn {

        MVN_VER=`python -c \"${PY_GET_MVN_VERS}\"`
        echo ${MVN_VERS}
}

test_mvn

তবে এটি চালাতে ব্যর্থ। যদি আমি স্ক্রিপ্টটি + এক্স বিকল্পের সাথে চালিত করি তবে এটি আমি দেখতে পাই:

++ python -c '"from' xml.dom.minidom import 'parse;dom' = 'parse(\'\''/path/to/pom.xml\'\'')\;print' '[n.firstChild.data' for n in 'dom.childNodes[0].childNodes' if n.firstChild and n.tagName == '\'\''version\'\'']"'
  File "<string>", line 1
    "from

আমি মনে করি পাইথন কোডটি এড়িয়ে যাওয়ার সাথে এর কিছু করার আছে। আমি কীভাবে এটিকে সঠিকভাবে পালাতে পারি?

উত্তর:


6

তর্কটিকে তার নিজস্ব ভেরিয়েবলে নিয়ে যাওয়ার বা পালানোর দরকার নেই।

তবে, বেশিরভাগ ক্ষেত্রে এটিকে একইভাবে রাখলে নিম্নলিখিতগুলি আমার পক্ষে কাজ করে:

#!/usr/bin/env bash
WS="/Users/danielbeck/Desktop"
PY_GET_MVN_VERS="from xml.dom.minidom import parse;dom = parse('${WS}/pom.xml');print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == 'version']"
function test_mvn {
        MVN_VER=$( python -c "${PY_GET_MVN_VERS}" )
        echo ${MVN_VER}
}
test_mvn

/Users/danielbeck/Desktop/pom.xml ম্যাভেন ডক্সের ন্যূনতম পিওএমের উদাহরণ:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
</project>

আউটপুট:

[u'1']

দয়া করে আপনার কোডটি ফেলে দিন এবং WSএটি কাজ না করা পর্যন্ত আপনার সামঞ্জস্য করার পরিবর্তে আমার (সামঞ্জস্য করার পরে ) ব্যবহার করুন। সেখানে আপনার বেশ কয়েকটি সিনট্যাক্স ত্রুটি রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.