set
হ'ল একটি শেল বিল্টিন , সেট এবং আনসেট শেল বিকল্প এবং অবস্থানগত পরামিতিগুলির জন্য ব্যবহৃত।
আর্গুমেন্ট ব্যতীত, set
বর্তমান লোকালে সাজানো সমস্ত শেল ভেরিয়েবল (বর্তমান সেশনে উভয় পরিবেশের ভেরিয়েবল এবং ভেরিয়েবল) মুদ্রণ করবে ।
আপনি বাশ ডকুমেন্টেশনও পড়তে পারেন ।
কয়েকটা সতর্কতা আছে।
set "$var"
var
মান নির্ধারণ করবে $1
। যদি বা $var
দিয়ে শুরু হয় , তবে সামগ্রীটি শেল বিকল্পগুলির ক্রম হিসাবে বিবেচিত হবে। যদি কোনও অবৈধ বিকল্প থাকে তবে বেশিরভাগ পসিক্স শেল ত্রুটিটি মুদ্রণ করবে। এবং ইন , এমুলেশন কেবল ত্রুটি মুদ্রণ করে না, বৈধ বিকল্পগুলিও সেট করে। প্রথম অবৈধ বিকল্পে বিকল্পগুলি সেট করা বন্ধ করার সময় , সেগুলি সমস্ত বরাদ্দ করবে। ইন :-
+
$var
$var
yash
zsh
sh
ksh
yash
zsh
yash
var=-fxd; set "$var"
f
এবং x
উপস্থিত হবে $-
, যখন:
var=fdx; set "$var"
শুধুমাত্র f
বর্তমান $-
। উভয় ক্ষেত্রেই, f
এবং ইন এবং ইমুলেশন সহ x
উপস্থাপন করবে ।$-
zsh
sh
ksh
আপনাকে সেই পরিস্থিতি থেকে রক্ষা করতে আপনি --
অবস্থানগত পরামিতি সেট করার প্রথম যুক্তি হিসাবে পাস করতে পারেন এমনকি এটি শুরু করে -
বা +
:
var=-fdx; set -- "$var"
নির্ধারণ $var
করা $1
হবে, তার বিষয়বস্তু নির্বিশেষে।
set --
কোনও তর্ক ছাড়াই সমস্ত অবস্থানগত পরামিতিগুলি আনসেট করবে।
যদি প্রথম যুক্তিটি হয় -
তবে আচরণটি অনির্দিষ্ট। সমস্ত পরিচিত POSIX শেলগুলি আনসেট x
এবং v
বিকল্পগুলি (ব্যতীত posh
) করবে এবং -
অবস্থানগত পরামিতিগুলির পরে কিছু বরাদ্দ করবে :
set -xv - -f
নিযুক্ত -f
করা হবে $1
। set -
এছাড়াও অবস্থানগত পরামিতিগুলি সেট করে নি। শিলি ওশও এরকম আচরণ করে। উত্তরাধিকারী আন সেট v
এবং x
বিকল্পগুলি না।
কেবলমাত্র পসিক্স শেল ব্যতিক্রম yash
, যা -
প্রথম অবস্থানিক পরামিতি হিসাবে বিবেচনা করে :
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
শিলি sh এমনকি -
যুক্তি উপস্থিত থাকলে কিছুই করেনি :
$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
<blank line>
s
$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs