কীভাবে সমস্ত স্ক্রিপ্ট একটি পথে চালিত করতে হয়?


13

ধরুন আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা প্যারামিটার হিসাবে একটি পাথ প্রাপ্ত করে। আমি কীভাবে সেই পথে অবস্থিত সমস্ত স্ক্রিপ্টগুলি কার্যকর করতে পারি?

উত্তর:


14

পথ ধরে ধরে আপনি বোঝাচ্ছেন কোনও ডিরেক্টরিতে পাথ, ব্যবহার run-parts। থেকে man run-parts:

run-parts - run scripts or programs in a directory

প্রথমে আপনাকে চালিত করতে চান এমন সমস্ত স্ক্রিপ্টগুলিতে আপনাকে এক্সিকিউট করার অনুমতি নির্ধারণ করতে হবে। সাধারণত run-partsডিরেক্টরিগুলি এবং এক্সিকিউটেবল হয় না এমন ফাইলগুলি সেই ডিরেক্টরিতে থাকা উপেক্ষা করবে।

যদিও চালানোর আগে আপনার পরীক্ষা করা উচিত কোন ফাইলগুলি --testবিকল্প দ্বারা চালিত হবে :

run-parts --test /path/to/directory

আমার উল্লেখ করা উচিত যে run-partsস্ক্রিপ্টগুলি কার্যকর করার জন্য একটি কঠোর নামকরণের কনভেনশন রয়েছে:

If neither the --lsbsysinit option nor the --regex option is given 
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.

man run-partsআরও ধারণা পেতে চেক করুন ।


কিছুটা পড়লে, আমি এটি পেয়েছি: #! / Bin / bash স্ক্রিপ্ট_ টু_রুন_ডির = / হোম / আপনি / ড্রপবক্স / স্ক্রিপ্ট_ টু_রুন স্ক্রিপ্টের জন্য "$ স্ক্রিপ্ট_টো_রুন_ডির" / * যদি পরীক্ষা -x "$ স্ক্রিপ্ট" করেন; তারপরে "$ স্ক্রিপ্ট" ফি কাজটি আমার জন্য কাজ করেছে, আপনি কী ভাবেন?
লুটারো আলভারেজ

@ লৌতারো আলভারেজ আপনি এই স্ক্রিপ্টটি দিয়ে যা করছেন, একটি সহজ কমান্ড দিয়ে খুব সহজেই সম্পন্ন করা যায় run-parts /home/you/Dropbox/scripts_to_run.. নামকরণ সম্পর্কে সতর্ক থাকুন ..
হিমাইল

রান অংশগুলি দুর্দান্ত। তবে এটি ক্রোন.ড এর জন্য তৈরি এবং ক্রোন.নোটাইস হিসাবে সিসলগকে লিখুন। তবে এটি ধারণার ভাল উত্স, যেমন টেম্প এবং ব্যাকআপ ফাইলগুলি এড়িয়ে যান ...
মিমভি-রু

9

আপনার স্ক্রিপ্টগুলির সঠিক নাম থাকলে রান-পার্টস কাজ করবে। আপনি যদি run-partsজটিল স্ক্রিপ্টগুলির জটিল নামকরণ স্কিমটির নাম পরিবর্তন করতে চান না তবে আপনি কিছু সহজ করতে পারেন

for file in ~/target/*; do $file 2>/dev/null; done

এটি এতে পাওয়া সমস্ত ফাইল (এবং ডিরেক্টরিগুলি) কার্যকর করার চেষ্টা করবে ~/target2>/dev/nullপুনঃনির্দেশ ত্রুটি বার্তা তাই এটি যখন ডিরেক্টরি বা অ এক্সিকিউটেবল ফাইল চালানোর প্রয়াস অভিযোগ করা হবে না।

বিকল্পভাবে, আপনি আরও পরিশীলিত চেষ্টা করতে পারেন

for file in ~/target/*; do
    [ -f "$file" ] && [ -x "$file" ] && "$file"
done

এটি পরীক্ষার ফলাফলগুলির প্রতিটি ফাইল ( [ -f $file ]), এক্সিকিউটেবল ( [ -x $file ]) কার্যকর হবে কিনা তা পরীক্ষা করে দেখবে এবং কেবলমাত্র এই দুটি পরীক্ষাই যদি সফল হয় তবে এটি ফাইলটি কার্যকর করার চেষ্টা করবে।


এই একজন আমার জন্য একটি প্রকল্পে পুরোপুরি কাজ করেছেন (একটি কাঁটাযুক্ত রেপো) আমি কাজ করছি - github.com/rattfieldnz/Vrorobash/blob/master/setup_projects.sh -
রব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.