এই ডকফায়িল এন্ট্রিপয়েন্টে "সেট -" কী করে?


41

আমি এই ডকার এন্ট্রিপয়েন্টটি কী তা বোঝার চেষ্টা করছি ।

ডকফিলিলেস লেখার সময় আমার কাছে এটি খুব সাধারণ প্যাটার্ন বলে মনে হয় তবে আমার বাশ দক্ষতা সীমাবদ্ধ এবং আমার কাছে বিশেষ বিশেষ বাশ চিহ্নগুলির কোনও ধারণা নেই ung

এছাড়াও, "-", "$!" এর জন্য গুগল করা কঠিন $ ইত্যাদি এগুলিকে বাশ বিশ্বে কী বলা হয়?

সংক্ষেপে বলতে গেলে লাইন বেলো কী করার চেষ্টা করছে?

if [ "${1#-}" != "$1" ]; then
  set -- haproxy "$@"
fi

উত্তর:


55

setকমান্ড (অপশন সেটিং না যখন) সেট করে অবস্থানগত পরামিতি যেমন

$ set a b c
$ echo $1
a
$ echo $2
b
$ echo $3
c

--মান "একটি বিকল্প হিসাবে এই নিম্নলিখিত আচরণ না কিছু করতে" হয়

"$@"সমস্ত বিদ্যমান অবস্থানের paramters হয়।

সুতরাং ক্রম

set -- haproxy "$@"

ইত্যাদি শব্দটির haproxyসামনে রাখবে $1 $2।

যেমন

$ echo $1,$2,$3
a,b,c
$ set -- haproxy "$@"
$ echo $1,$2,$3,$4   
haproxy,a,b,c

আমি "-" ব্যবহার করে কিছু না পারলেও কিছু দেখছি না। এখানে চেষ্টা করেছেন এবং একই ফলাফল পেয়েছেন। পার্থক্যটি হাইলাইট করার জন্য উত্তরটি উন্নত করতে পারলে আমি পছন্দ করব।
— লুকাস পটারস্কি

8
তুলনা set -- -z 2 3 4এবং set -z 2 3 4। --স্টপ -aহচ্ছে একটি বিকল্প হিসেবে ব্যাখ্যা। এক্ষেত্রে এটি প্রয়োজনীয় নয় , তবে আপনি কী অনুগ্রহ করে --তা অনুসরণ করছেন:
— স্টিফেন হ্যারিস

1
অন্য প্রধান পার্থক্যটি হ'ল আপনি যদি অন্য স্ক্রিপ্টের ভিতরে কোনও স্ক্রিপ্টের set -- $arg1 $arg2স্রোসিং করে থাকেন তবে এটি ব্যবহার করে আপনার উত্সাহিত স্ক্রিপ্টটি আর্গুমেন্টগুলি পড়ার অনুমতি দেবে, অন্যথায় কেবল বাশ সরাসরি সোর্স করা স্ক্রিপ্টে আর্গুমেন্টগুলি সমর্থন করে (এবং এটি লক্ষ্য করা জটিল)।
— ড্রাগন 788
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.