এর মধ্যে একটির প্রথম ম্যাচটি বাশ স্ক্রিপ্টে নিন


0

আমি আইসডব্লিউএম-এরusr/share/applications জন্য একটি মেনু তৈরি করতে / ফাইল পড়তে বাশ স্ক্রিপ্ট তৈরি করছি । এখানে আমার কোডের কয়েকটি:

file = nm-connection-editor.desktop
name = $((grep -m 1 "Name=" $file) | sed 's/Name=//g')
icon = $ ((grep Icon= $file) | sed 's/Icon=//g')
execu = $ ((grep -m 1 Exec= $file) | sed 's/Exec=//g')
commandline = "prog $name $icon $execu"
cate = $(grep -m 1 Categories $file)
echo $cate result in:
Categories=GNOME;GTK;Settings;X-GNOME-NetworkSettings;

if [ $(echo $cate |grep Network) ]; then echo $commandline >> menu.Network; fi
if [ $(echo $cate |grep Settings) ]; then echo $commandline >> menu.Settings; fi

সমস্যাটি $commandlineউভয় বিভাগে প্রদর্শিত হয়।

আমি এটি কেবল সেটিংসে প্রদর্শিত হতে চাই

আমি শব্দের একটি তালিকাতে ভাবি: গেমস নেটওয়ার্ক ইউটিলিটি সেটিংস অফিস সিস্টেম ...

এবং $cateলাইনের শুরুতে সবচেয়ে কাছেরটি (থেকে ) নির্বাচন করুন , তবে কীভাবে?


পরিবর্তে আপনি কি elifআপনার দ্বিতীয়টির জন্য একটি ব্যবহার করতে পারেন if? এই ভাবে NetworkSettingsউভয় লাইনের সাথে মেলে না
এরিক রেনুফ

প্রদত্ত কোডটিতে সিনট্যাক্স ত্রুটি রয়েছে - অ্যাসাইনমেন্টের মধ্যে ফাঁকা স্থান, যদি স্টেটমেন্টগুলিতে ব্র্যাকেটের আগে ফাঁকের অভাব থাকে। সম্ভবত এটিতে আটকানো ত্রুটির কারণে, তবে এটি পরীক্ষা করার জন্য এটি আরও কাজ করে।
আর্গনাউটস

| গ্রেপ নেটওয়ার্ক থেকে | গ্রেপ নেটওয়ার্ক | থেকে শেষ লাইনে এই বিভাগটি সংশোধন করার চেষ্টা করুন grep -v "$ কমান্ডলাইন"
আর্গনোট

নির্দিষ্ট ইনপুট সরবরাহ করতে পারে (আপনার কোডের প্রাথমিক অ্যাসাইনমেন্টগুলিতে আপনি কী মানগুলি পান) এবং আউটপুটটি আপনি কী চান তা প্রদান করতে পারে (হুবহু)। আপনার প্রদত্ত স্পষ্টতা আমাকে এটিকে কম বোঝে; আমি মনে করি একটি ভাষার বাধা আছে। এছাড়াও, আপনি যদি কোডটি চালাচ্ছেন তবে আপনি কিছু খারাপ ডেটা পাবেন-স্পেসগুলি অপসারণ করতে হবে যেমন ব্যবহার করুন: আইকন = $ ((... নয়: আইকন = $ ((...
আর্গনোটস

আসলে, স্পেসগুলি সম্পর্কিত ফিক্সটিকে উপেক্ষা করুন। পুরো বিবৃতি ত্রুটিযুক্ত। এটি অন্যান্য অনেক সমস্যার মধ্যে গ্রেপ থেকে ফলাফলটি কার্যকর করার চেষ্টা করবে to
আর্গনাউটস

উত্তর:


1

আপনার ক্রমিক বিবরণগুলি ifআরও প্রাকৃতিক ফিটগুলির মতো দেখায় case:

case "$cate" in
    *Network*)
        echo $commandline >> menu.Network
        ;;
    *Settings*)
        echo $commandline >> menu.Settings
        ;;
esac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.