হ্যাঁ, এটি শেল প্যারামিটার সম্প্রসারণের এক ধরণের প্রতিস্থাপন এটি :
${parameter/pattern/replacement}
কিন্তু যদি প্রথম পর প্রথম অক্ষর /
পারেন হয় /
বা #
বা %
এটি বিশেষ অর্থ আছে all
(পুনরাবৃত্তি), start
এবং end
।
সঙ্গে:
$ str='one_#two_two_three_one'
একটি একক /
প্রথম উদাহরণ প্রতিস্থাপন করবে। প্রথম উদাহরণ one
:
$ echo "${str/one/x-x}"
x-x_#two_two_three_one
বা এর প্রথম উদাহরণ two
:
$ echo "${str/two/x-x}"
one_#x-x_two_three_one
one
শেষের উদাহরণ :
$ echo "${str/%one/x-x}"
one_#two_two_three_x-x
সমস্ত পুনরাবৃত্তি two
:
$ echo "${str//two/x-x}"
one_#x-x_x-x_three_one
one
শুরুতে উদাহরণ :
$ echo "${str/#one/x-x}"
x-x_#two_two_three_one
একটি স্ট্রিং যা দিয়ে শুরু #
(উদ্ধৃতি #
):
$ echo "${str/\#two/x-x}"
one_x-x_two_three_one
তবে আপনি যদি # (অব্যক্ত) একা ছেড়ে যান তবে প্রতিস্থাপনটি ভেরিয়েবলের শুরুতে সেট করা থাকে:
$ echo "${str/#/====}"
====one_#two_two_three_one
তদতিরিক্ত, যদি প্যারামিটারটি একটি অ্যারে হয় তবে প্রতিস্থাপনটি সমস্ত উপাদানগুলিতে করা হয়:
$ str=( one two three )
$ echo "${str[@]/#/==}"
==one ==two ==three
#
এবং%
এটি প্যাটার্নের অংশ এবং একই ধরণের//
থেকে ভিন্ন অপারেটর/
এবং ব্যবহার করে। আপনার কাছেpattern='#x'; echo "${var/$pattern}"
(বা${var//$pattern}
) থাকতে পারে তবেpattern=/x; echo "${var/$pattern}"
একইরকম নয়echo "${var//x}"
। লক্ষ্য করুন#
এবং%
সংমিশ্রণে যাবেzsh
, কিন্তু নাbash
কিংবাksh
।