আমি কমা-বিচ্ছিন্ন পরামিতিগুলির তালিকার জন্য সমাপ্তির নিয়ম তৈরি করতে চাই। উদাহরণস্বরূপ আমার কাছে কমান্ড রয়েছে যা সার্ভারের নামের তালিকা অর্জন করে:
myscript -s name1,name2,name3
এই মুহুর্তে আমি নিম্নলিখিত সমাপ্তি লিখতে পরিচালিত করেছি:
_myscript () {
local cur prev opts
_get_comp_words_by_ref cur prev
opts='-s'
servers='name1 name2 name3'
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
else
case "${prev}" in
-s)
if [[ "$cur" == *,* ]]; then
local realcur prefix
realcur=${cur##*,}
prefix=${cur%,*}
COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
else
COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
fi
;;
*)
# do nothing
;;
esac
fi
}
তবে এতে কমপক্ষে 2 টি সমস্যা রয়েছে:
- বর্তমান মানের জন্য পরামর্শগুলি তাদের উপসর্গের সমস্ত পূর্ববর্তী মানগুলি অন্তর্ভুক্ত করে।
- এটি সদৃশ মান বিবেচনা করে না।
এই ধরনের ক্ষেত্রে সবচেয়ে ভাল অনুশীলন কি? হয়তো বাশ-কমপ্লিমেন্টগুলির সিএসভি-তালিকাগুলির জন্য কিছু বান্ডিল ফাংশন রয়েছে?
$VARIABLE
, শব্দ ভাঙ্গা ঘটবে না। শুধু ব্যবহার IFS=, LIST=($VARIABLE)
।
IFS=, LIST=("$VARIABLE")
যেখানে AR ভেরিয়েবলটিতে আপনার কমা বিভাজিত মান রয়েছে।