হ্যাঁ, এটি শেল প্যারামিটার সম্প্রসারণের এক ধরণের প্রতিস্থাপন এটি :
${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।