বাশ স্ক্রিপ্ট: এমকেএফএসে আর্গুমেন্ট প্রেরণ করা


0

আমি আমার পার্টিশন ফর্ম্যাট করতে বাশ স্ক্রিপ্ট লিখছি। যে কমান্ডটি আমি চালাতে চাই তার মধ্যে একটি হল:

mkfs.btrfs -f -m single -L root /dev/sda1

সুতরাং আমি এই কমান্ডটি বিকল্প অংশ: -f -m single -L root এবং পার্টিশন অংশে বিভক্ত করেছি: /dev/sda1 এবং এগুলিকে ভেরিয়েবলে রেখেছি :

mkfs.btrfs "${myoptions}" /dev/"${mypartition}"

তবে এতে ব্যর্থ হয়:

mkfs.btrfs: invalid option -- ´ ´

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

mkfs.btrfs "${array[1]}" "${array[2]}"

বা এই মত:

mkfs.btrfs "${array[*]}"

কিন্তু এটি ব্যর্থ হয়।

যদি আমি এটি অপশন অংশটি ছাড়া কাজ করি তবে এটি আমার অনুমান যে সমস্যাটি দুটি আর্গুমেন্টের মধ্যে ফাঁকা জায়গা থেকে আসে তবে আমি কীভাবে এটি সমাধান করব জানি না।


আপনি কীভাবে সি এল এলিতে স্ক্রিপ্টটি চালাবেন তা নির্দিষ্ট করতে পারেন? এটি কেবল এমন হতে পারে যে আপনার যুক্তিগুলিকে উদ্ধৃতিতে রাখতে হবে। লাইক: $ স্ক্রিপ্ট "-ফ-মিঃ সিঙ্গল-এল রুট" "এসডিএ
গৌতম

এটি স্পষ্টতই স্পেস (সমস্তটি) @ ইগানাসিও ভাস্কেজ-আব্রামস লিখেছেন।
কভারফ্লাওয়ার

উত্তর:


3

আমি দুটি অংশকে একটি অ্যারেতে রাখার চেষ্টা করেছি ...

যথেষ্ট ভাল না. প্রতিটি একক যুক্তি অবশ্যই একটি অ্যারের উপাদান (বা ভেরিয়েবলের একমাত্র মান) হতে হবে।

args1=(-f -m single -L root)
args2=/dev/"$mypartition"
mkfs.btrfs "${args1[@]}" "$args2"

0

এই ধরণের জিনিসটি আমার কাছে সর্বদা একটি বিশাল ব্যথা। এই ক্ষেত্রে যেহেতু আপনার কোনও যুক্তির নিজস্ব স্থান নেই, তাই আমি দ্বিগুণ উদ্ধৃতিগুলি সরিয়ে ফেলার চেষ্টা করব এবং বাশকে আপনার $myoptionsভেরিয়েবলের জন্য শব্দগুলিতে ভাঙতে দেব । সুতরাং এই:

mkfs.btrfs ${myoptions} /dev/"${mypartition}"

ডাবল উদ্ধৃতি দিয়ে আপনি একটি ক্ষেত্র পাবেন -f -m single -L rootযেখানে স্পেস থাকবে। তা ছাড়া, এটা ব্যক্তির ক্ষেত্র ভেঙে দিতে হবে -f -m single -Lএবং rootএবং টাইপ হিসাবে একই আচরণ দেন mkfs.btrfs -f -m single -L root /dev/sda1ইন্টারেক্টিভ শেল হবে।

আপনার যদি কিছু যুক্তি থাকে যাতে স্পেস থাকে, আপনাকে $IFSভেরিয়েবল এবং আপনার এনকোডিং দিয়ে জটিল হতে পারে ।

আপনি বিশেষ ভেরিয়েবলও ব্যবহার করতে পারেন $@যার নিজস্ব নিয়ম রয়েছে।

আমি আমার সমস্ত শেল স্টাফ পজিক্সে লিখি যদিও আমি নিশ্চিত যে বাশের ক্ষেত্রে এটি করার একটি সহজ উপায় আছে।


1
আমি এটি চেষ্টা করেছি: mkfs.btrfs {{myoptions} / dev / "$ {mypartition}" আবার চেষ্টা করলেও এটি কার্যকর হয়নি। আমি এই বিশেষ পরিবর্তনশীল a @ এ একবার দেখেছি তবে আমি যদি ভুল না হয়ে থাকি তবে এটি আপনার নিজের সংজ্ঞায়িত এবং প্রদত্ত ফাংশনগুলির জন্য নয়।
কভারফ্লাওয়ার

না আপনি ঠিক বলেছেন, আমি ভেবেছিলাম উদ্ধৃতিগুলি সরানো এই নির্দিষ্ট ক্ষেত্রে কার্যকর হবে এবং সহজ হবে be $@একটি বিশেষ পরামিতি যা আপনি অ্যারের ব্যবহারের সাথে নকল করতে পারেন কারণ shঅ্যারে নেই। সত্যি বলতে, আমি আমার স্ক্রিপ্টগুলি shসামঞ্জস্যপূর্ণ হওয়ার জন্য লিখি কারণ আমি এটি উপভোগ করেছি এবং এটি বাশ সহ সমস্ত পসিক্স সুসংগত শেলগুলিতে সমর্থিত। যদি আপনি কেবল মজাদার জন্য আগ্রহী হন, তবে etalabs.net/sh_tricks.html হ'ল আরও কিছু কার্যকর কৌশল (ব্যবহার সহ $@) এর একটি সংক্ষিপ্ত, ভাল লিখিত এবং উপস্থাপিত তালিকা ।
বাইটপোর্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.