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


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.