বাশ: অবস্থানগত পরামিতিগুলির টুকরা


20

$@প্রথমে সমস্ত অবস্থানগত পরামিতিগুলি অন্য কোনও অ্যারেতে অনুলিপি না করে আমি কীভাবে বাশের টুকরো পেতে পারি ?

argv=( "$@" )
echo "${argv[@]:2}";

1
সর্বদা উদ্ধৃতি "$@"argvকোনও কার্যক্রমে ফাঁকা স্থান থাকলে আপনার অ্যাসাইনমেন্টটি ভেঙে যায়।
জর্ডানম

উত্তর:


31

আপনি অন্য কোনও অ্যারের মতো একই বিন্যাসটি ব্যবহার করতে পারেন। এ থেকে ২ য় এবং ৩ য় উপাদান বের করতে $@, আপনি এটি করবেন:

echo "${@:1:2}"
          - -
          | |----> slice length
          |------> slice starting index 

1
এটি v4.1.2 তে চর ভিত্তিতে একটি চরের উপর কাজ করে বলে মনে হচ্ছে, শব্দ ভিত্তিতে কোনও শব্দে এটি করার কোনও উপায় আছে কি?
আলেকজ মাগুরা

@ আলেকজমগুরা আপনার অর্থ কী তা আমি বুঝতে পারি না। এটি অ্যারের উপাদানগুলিতে কাজ করে। আপনার যদি এক-চরিত্রের উপাদান থাকে তবে এটি "অক্ষরগুলিতে" কাজ করবে। প্রতিটি উপাদান যদি একটি শব্দ হয় তবে তা শব্দের উপর কাজ করে। আপনি সম্ভবত একটি স্ট্রিং এ চেষ্টা করছেন এবং একটি অ্যারে নয়?
টেরডন

আমি এটি "$ @" একটি অনুলিপিটিতে চেষ্টা করে দেখছি, যা আমার ধারণা যে সেই সময়ে একটি স্ট্রিং হয়ে উঠতে পারে, আমি নিশ্চিত নই।
আলেকজ মাগুরা

৪.২.৪6 বাশে, "${@:1:2}"আসলে আমাকে প্রথম এবং দ্বিতীয় কমান্ড লাইন আর্গুমেন্ট দেয় । এদিকে, "${@:1}"আমাকে পুরো কমান্ড লাইন আর্গুমেন্ট"${@:0}" দেয় এবং আমাকে পুরো কমান্ড লাইন আর্গুমেন্টের পরে স্ক্রিপ্টের নাম দেয় ।
রকাল্লাইট

@ রোকালাইট ভাল, হ্যাঁ $@ অ্যারের দ্বিতীয় এবং তৃতীয় উপাদানগুলি হ'ল প্রথম এবং দ্বিতীয় যুক্তি argu "${@:1}"2 য় উপাদান (1 ম আর্গুমেন্ট) ${@:0}দিয়ে শুরু হওয়া পুরো অ্যারে এবং 1 ম উপাদান থেকে শুরু করে পুরো অ্যারেটি স্ক্রিপ্টের নাম থেকে মুদ্রণ করবে । আপনি কি আশা করছিলেন?
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.