স্ক্রিপ্ট নির্বাহ যখন পরিবেশ রাখুন


1

আমি একটি bash স্ক্রিপ্ট আছে যা কমান্ড সংখ্যা নির্বাহ করা উচিত। কমান্ডগুলি যখন মেয়াদে প্রবেশ করে তখন জরিমানা কাজ করে কিন্তু যখন আমি স্ক্রিপ্টের ভিতরে থেকে তাদের চালানোর চেষ্টা করি তখন তারা কাজ করে না, তাই আমি অনুমান করি এটি পরিবেশ-নির্দিষ্ট কিছু।

আমি স্ক্রিপ্ট আছে

exec "$cmd"

এবং এটি কাজ করে না, যখন আমি $ cmd এর সামগ্রী কপি করে এবং টার্মিনালে পেস্ট করি তবে এটি সূক্ষ্ম কাজ করে।

স্ক্রিপ্ট চালানোর সময় আমি কিভাবে বর্তমান পরিবেশ রাখবো? নাকি অন্য কোন ধারণা আছে যে এটি কি হতে পারে?


1
স্ক্রিপ্ট চালানো ডিফল্টরূপে পরিবেশ পরিবর্তন করে না। আপনি সমস্যা misdiagnosed করেছি।
Ignacio Vazquez-Abrams

1
নিশ্চিত হও export চলমান আগে স্ক্রিপ্ট দ্বারা প্রয়োজনীয় variables।
choroba

Ingacio: Hmkay, তারপর আমি জানি না। আমি স্ক্রিপ্টে "$ কমান্ড" এক্সিকিউট করি এবং এটি কাজ করে না, টার্মিনাল কাজের সঠিক একই কমান্ড। choroba: আমি নিশ্চিত নই কোন ভেরিয়েবল এটি: / এটি একটি বড় এন্টারপ্রাইজ এনভায়রনমেন্ট যেখানে স্ক্রিপ্টগুলি এবং ভেরিয়েবলগুলি সর্বত্র থাকে।
dutt

আপনি exec ব্যবহার করছেন কিছু বিশেষ কারণ আছে? কেন শুধু কমান্ড সরাসরি লিখবেন না? যেমনঃ `cmd = ls; $ Cmd কমান্ড; '
terdon

আমি উভয় চেষ্টা এবং উভয় কাজ, কোন পার্থক্য আছে?
dutt

উত্তর:



0

আদর্শ set -o allexport আপনার bash স্ক্রিপ্ট শীর্ষে। এটি স্বয়ংক্রিয়ভাবে আপনি নির্ধারণ করা সমস্ত ভেরিয়েবল রপ্তানি করা উচিত। (মনে রাখবেন যে এটি খারাপ শৈলী বলে মনে করা হয়; সঠিক জিনিসটি কেবল সঠিক ভেরিয়েবলগুলি রপ্তানি করা হবে)।


-2

যদি একই কমান্ড থেকে সমস্ত কমান্ডটি চালানো উচিত তবে আপনি এটি ব্যবহার করতে পারেন

cd /d $Location

স্ক্রিপ্টের শুরুতে কমান্ডের জন্য অবস্থানটি সেট করতে সেট করুন।

সিডি - এটি পরিবর্তন ডিরেক্টরি কমান্ড। / ডি - এই সুইচ সিডি উভয় ড্রাইভ এবং ডিরেক্টরি পরিবর্তন একবার তোলে।

যদি আপনি কমান্ডটি চালানোর জন্য চান D: \ স্ক্রিপ্টগুলি থেকে সঙ্গে আউট / ডি আপনি প্রয়োজন হবে

D:
cd \scripts

কিন্তু উপরের কমান্ড দিয়ে আপনি এক লাইন এ এটি করতে পারেন

cd /d D:\scripts

আবার সম্পাদনা করুন

আমার ক্ষমাপ্রার্থী, এটা স্পষ্টভাবে বলছে, কিন্তু আমি কিছু কারণে ব্যাচ এ পড়ি। ভবিষ্যতে আরো সতর্ক হতে হবে।


1
ডাউনভোটেড কারণ এই উত্তরটি অস্পষ্ট, সম্ভবত আপনি এটি সংরক্ষণ করতে পারেন। আপনি ব্যাখ্যা করতে পারেন (দ্বারা সম্পাদন করা আমি) কি /d মানে বোঝানো হয়? আপনি বিভ্রান্তিকর না cd এর cmd.exe এক সঙ্গে bash? আমার মনোযোগ পেতে একটি মন্তব্যে আমাকে (@ ক্যামিলম্যাসিওরোস্কি) অবহিত করুন। আমি উন্নত উত্তর পর্যালোচনা করব এবং আমি ডাউনভোট প্রত্যাহার বিবেচনা করব। (উত্তরটি মুছে ফেলা একটি বিকল্প, যদি আপনি স্বীকার করেন যে এটি উন্নত করা যায় না তবে আমি আশা করি এটি উন্নত হবে)।
Kamil Maciorowski

@ ক্যামিলম্যাসিওরোস্কি - আরো ব্যাখ্যা করার জন্য সম্পাদিত।
jesse

1
প্রশ্ন ট্যাগ করা হয় সজোরে আঘাত কিন্তু আপনার উত্তর ব্যাখ্যা করে cd এর cmd.execd ব্যাশে চিকিত্সা করবে /d একটি পথ হিসাবে। অন্য দিকে $Location একটি বাশ পরিবর্তনশীল মত দেখায় এবং আমি অনুমান cmd.exe এটা বুঝতে হবে না। উত্তর আমার দ্বন্দ্ব দাঁড়িয়ে কারণ উত্তর দুটি ভিন্ন confuses cd আদেশ এবং এটি তাই দরকারী নয়।
Kamil Maciorowski

আরও একটি বিষয়: অনুগ্রহ করে যে কোন উত্তরটি প্রশ্নের সাথে মিলিত হওয়া উচিত দয়া করে মনে রাখবেন; তাই উত্তর সংরক্ষণ করার জন্য সঠিক জিনিস নির্দেশ করে সবকিছু ড্রপ হয় cd এর cmd.exe এবং কি বোঝায় রাখা cd এর bash (প্রায় অন্য উপায় না).
Kamil Maciorowski
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.