লিনাক্স: স্থানীয় ভেরিয়েবলের জন্য কমান্ড সেট করুন


9

আমি স্থানীয় / পরিবেশের ভেরিয়েবলগুলি এবং এক্সপোর্ট / সেট কমান্ডগুলি বোঝার চেষ্টা করছি।

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

দয়া করে ব্যাখ্যা করুন কেন echo $FILEMখালি স্ট্রিং ফিরে আসে

উত্তর:


21

আপনি বিভ্রান্ত bashকরছেন csh

ইন bashএর মত কোন বোর্ন মত শেল, setকরতে কমান্ড সেট অপশন (শেল কনফিগারেশন সেটিংস পছন্দ -f, -C, -o noclobber...) এবং অবস্থানগত মাপদণ্ডগুলি ( $1, $2...)।

set FILEM="razrax"

সেট $1করে FILEM=razrax

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

বোর্নের মতো শেলগুলিতে পরিবর্তনশীল অ্যাসাইনমেন্টের জন্য সিনট্যাক্সটি হ'ল:

VAR=value

(উভয় পক্ষেই কোনও স্থানের অনুমতি নেই =)।

kshএবং কিছু অন্যান্য বোর্নের মতো শেল (mksh, pdksh, zsh) এছাড়াও অ্যারে ভেরিয়েবলগুলি নির্ধারণ করতে পারে setযদিও:

set -A array value1 value2

zsh, bash, yashএবং নতুন সংস্করণে kshব্যবহার এই সিনট্যাক্স পরিবর্তে:

array=(value1 value2)

বিপরীতে, মধ্যে cshবা tcsh, বাক্য গঠনটি হ'ল:

set VAR = value
set array = (value1 value2)

(aroundচ্ছিক চারপাশে ফাঁকা স্থান =)।

ইন rc/ esশেল:

VAR = value
array = (value1 value2)

(aroundচ্ছিক চারপাশে ফাঁকা স্থান =)।


সুন্দর উত্তরের জন্য আপনাকে ধন্যবাদ। কেবলমাত্র আমি বুঝতে পারছি না কী পার্থক্যটি benweet বিকল্প এবং স্থানীয় ভেরিয়েবল "সেট অপশন সেট করার আদেশ"?
iJava

@ আইজভা, বিকল্পটি set -Cসেট করে -C(একই set -o noclobber)। set fooনির্ধারণ fooকরতে $1(এবং $#1, ( $2, $3সেট না হলে আগে থেকেই সেট করা))। বিশদ জন্য আপনার শেল এর ম্যানুয়াল পরীক্ষা করুন।
স্টাফেন চেজেলাস

1
আমি বুঝতে পারছি না কি কি বিকল্প আছে। এই বিকল্পগুলি কী মূল (স্ট্রিং [] আরগস) এর মতো প্রোগ্রামগুলিতে প্রেরণ করা হয়? অথবা কি? তারা কোথায় ব্যবহার করা হয়?
iJava

1
@ আইজভা, সেগুলি সেটিংস যা শেলের আচরণকে প্রভাবিত করে। আবার, আরটিএফএম
স্টাফেন চ্যাজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.