Linux / Unix စစ်ဌာနချုပ်: expr

အမည်

expr - တစ်ဦးစကားရပ်ကိုအကဲ

အနှစ်ချုပ်

arg expr? arg arg ... ?

Concatenates arg 's (သူတို့ကိုအကြား separator နေရာများဖြည့်စွက်), တစ်ဦး TCL စကားရပ်အတိုင်းရလဒ်တန်ဖိုးနှင့်တန်ဖိုးကို return ပွနျ။ TCL အသုံးအနှုန်းတွေအတွက်ခွင့်ပြုအဆိုပါအော်ပရေတာကို C အသုံးအနှုန်းတွေအတွက်ခွင့်ပြုထားသောအော်ပရေတာများ၏အပိုင်းတစ်ပိုင်းကိုသာလျှင်ဖြစ်ကြသည်ကို၎င်း, သူတို့သက်ဆိုင်ရာကို C အော်ပရေတာအဖြစ်အတူတူအဓိပ္ပာယ်ကိုနှင့်စားပေးမှုရှိသည်။ အသုံးအနှုန်းတွေနီးပါးအမြဲ ဂဏန်းရလဒ်များကိုလိုက်လျော (integer ဖြစ်တဲ့အတွက်သို့မဟုတ် floating-point တန်ဖိုးများ) ။ ဥပမာအားဖြင့်, ဟူသောအသုံးအနှုနျး

expr 8.2 + 6

14.2 တန်ဖိုး။ TCL အသုံးအနှုန်းတွေ operands သတ်မှတ်ထားသောသောလမ်းအတွက်ကို C အသုံးအနှုန်းတွေကနေကွဲပြား။ ဒါ့အပြင် TCL အသုံးအနှုန်းတွေကို non-numeric operands နှင့် string ကိုနှိုင်းယှဉ်ထောက်ခံပါတယ်။

Operands

တစ်ဦးက TCL စကားရပ် operands, အော်ပရေတာများနှင့်ကွင်းများပေါင်းစပ်ပါဝင်ပါသည်။ white space ဟာ operands နှင့်အော်ပရေတာများနှင့်ကွင်းများအကြားအသုံးပြုလိမ့်မည် ကစကားရပ်ရဲ့ညွှန်ကြားချက်အားဖြင့်လစ်လျူရှုသည်။ အဘယ်မှာဖြစ်နိုင် operands ကိန်းတန်ဖိုးများအဖြစ်အဓိပ္ပာယ်ကောက်ယူနေကြသည်။ (ထို operand ၏ပထမဦးဆုံးနှစ်ဦးကိုဇာတ်ကောင် 0x နေကြသည်လျှင်), ဒါမှမဟုတ် hexadecimal အတွက် (ထို operand ၏ပထမဦးဆုံးဇာတ်ကောင် 0 လျှင်) integer တန်ဖိုးများကို octal အတွက်ဒဿမ (ပုံမှန်ကိစ္စတွင်) တွင်သတ်မှတ်ထားသောနိုင်ပါသည်။ တစ်ဦး operand အထက်တွင်ပေးသောကိန်းကို formats ၏တဦးတည်းရှိသည်မဟုတ်ပါဘူးဆိုရင်ကြောင့်ဖြစ်နိုင်လျှင်, ကမျော-point အရေအတွက်ကအဖြစ်ကုသနေပါတယ်။ Floating-အမှတ်နံပါတ်များကို (ဌ, သော, f မှလွဲ. က F, နဲ့ L နောက်ဆက်အများဆုံးတပ်ဆင်အတွက်ခွင့်ပြုလိမ့်မည်မဟုတ်ပေ) တစ်ဦးကို ANSI-compliant ကို C compiler ကလက်ခံနည်းလမ်းမဆိုသတ်မှတ်ထားသောနိုင်ပါသည်။ 2.1, 3, 6e4, 7.91e + 16: ဥပမာ, အောက်ပါအားလုံးတို့ကိုခိုင်လုံသော floating-point နံပါတ်များကိုဖြစ်ကြသည်။ အဘယ်သူမျှမဂဏန်းအနက်ကိုဖြစ်နိုင်လျှင်, တစ်ဦး operand တစ်ဦး string ကိုအဖြစ်ကျန်ရစ်၏ (နှင့်အော်ပရေတာကသာကန့်သတ်ထားကလျှောက်ထားစေခြင်းငှါ) ။

Operands အောက်ပါနည်းလမ်းများကိုမဆိုအတွက်သတ်မှတ်ထားသောစေခြင်းငှါ:

[1]

တစ်ဂဏန်းတန်ဖိုးကိန်းသို့မဟုတ် floating-point ဖြစ်စေအမျှ။

[2]

တစ်ဦး TCL variable ကိုအမျှစံ $ သင်္ကေတကိုသုံးနိုင်သည်။ အဆိုပါ variable ကိုရဲ့တန်ဖိုး operand အဖြစ်အသုံးပြုလိမ့်မည်။

[3]

ကို double-ကိုးကားအတွက်ပူးတွဲတစ်ဦး string ကိုအမျှ။ ဟူသောအသုံးအနှုနျး parser ကိုပုကိုးကားအကြားသတင်းအချက်အလက်များအပေါ်ဘယ်ဘက်မျဉ်းစောင်း, variable ကိုနှင့် command ကိုအစားထိုးလုပ်ဆောင်လျက်, operand အဖြစ်ရရှိလာတဲ့တန်ဖိုးကိုသုံးပါလိမ့်မယ်

[4]

မသန်စွမ်းပဲအတွက်ပူးတွဲတစ်ဦး string ကိုအမျှ။ ဖွင့်သတ္တုအထိမ်းအချုပ်နှင့်ကိုက်ညီနီးစပ်သတ္တုအထိမ်းအချုပ်အကြားအဆိုပါဇာတ်ကောင်ကိုမဆိုအစားထိုးမရှိဘဲ operand အဖြစ်အသုံးပြုလိမ့်မည်။

[5]

တစ်ဦး TCL command ကိုအမျှကွင်းခတ်အတွက်ပူးတွဲ။ အဆိုပါ command ကို execute လုပ်ပါလိမ့်မည်နှင့်၎င်း၏ရလဒ် operand အဖြစ်အသုံးပြုလိမ့်မည်။

[6]

အဘယ်သူ၏ငြင်းခုံထိုကဲ့သို့သောအပြစ်တရား ($ x ကို) အဖြစ် operands များအတွက်အထက်ပါပုံစံမဆိုရှိတစ်ဦးသင်္ချာ function ကိုအမျှ။ သတ်မှတ်လုပ်ဆောင်ချက်များကိုများစာရင်းကိုအောက်တွင်ဖော်ပြထားသည်ကြည့်ရှုပါ။

အစားထိုး (ကိုးကားညှို့အတွင်းပိုင်းဥပမာ) အထက်ဖြစ်ပေါ်ဘယ်မှာသူတို့ဟူသောအသုံးအနှုနျးရဲ့ညွှန်ကြားချက်အားဖြင့်ဖျော်ဖြေကြသည်။ ဟူသောအသုံးအနှုနျး Processor ကိုကိုခေါ်ခင်သို့သော်အစားထိုးတစ်ခုအပိုဆောင်းအလွှာပြီးသားအမိန့် parser ကိုတို့ကဖျော်ဖြေခဲ့ကြပေမည်။ အောက်တွင်ဖော်ပြထားသောဆွေးနွေးထားတဲ့အတိုင်းက contents တွေကိုအပေါ်အစားထိုးဖျော်ဖြေကနေ command ကို parser ကိုကာကွယ်တားဆီးဖို့ဆီကိုဦးအတွက်အသုံးအနှုနျးမြားခိုင်ခံ့ဖို့များသောအားဖြင့်အကောင်းဆုံးဖြစ်သည်။

ရိုးရှင်းအသုံးအနှုန်းတွေအချို့ကိုဥပမာအဘို့, variable ကိုတစ်ဦးတန်ဖိုး 3 ရှိပြီးအဆိုပါ variable ကိုခတန်ဖိုး 6. ရှိပါတယ်ထိုအခါအောက်ကလိုင်းချင်းစီ၏လက်ဝဲဘက်အပေါ် command ကိုမျဉ်း၏ညာဘက်အခြမ်းအပေါ်တန်ဖိုးထုတ်လုပ်ပါလိမ့်မယ်ဆိုပါစို့:

expr 3.1 + $ a6.1 expr 2 + "$ တစ်ဦး။ $ b", 5.6 expr 4 * 8 expr {{စကားလုံးတဦးတည်း} < "စကားလုံး $ တစ်ဦး"} 0 [ "6 2" llength]

အော်ပရေတာ

အဆိုပါခိုင်လုံသောအော်ပရေတာ, အောက်တွင်ဖော်ပြထားသောစားပေးမှု၏အမိန့်လျော့ကျလာအတွက်အုပ်စုဖွဲ့နေကြသည်:

- + ~!

Unary အနုတ်, unary ပေါင်း, နည်းနည်းပညာရှိမဟုတ်ပါ, ယုတ္တိမဟုတ်ပါ။ ဤအ operands အဘယ်သူအားမျှ string ကို operands အသုံးချခံရစေခြင်းငှါ, နည်းနည်းပညာသာကိန်းမှလျှောက်ထားစေခြင်းငှါမ။

* /%

များပြား, သွေးခွဲ, ကျန်ရှိသော။ ဤအ operands အဘယ်သူအားမျှ string ကို operands အသုံးချခံရစေခြင်းငှါ, ကျန်ရှိသောသာကိန်းမှလျှောက်ထားနိုင်ပါသည်။ ကျန်ရှိသောအမြဲတမ်း divisor နှင့် divisor ထက်သေးငယ်တစ်ဦးအကြွင်းမဲ့အာဏာတန်ဖိုးကိုကဲ့သို့တူညီသောလက္ခဏာသက်သေရှိပါလိမ့်မယ်။

+ -

Add နှင့်နုတ်။ မည်သည့်ဂဏန်း operands များအတွက်သက်တမ်းရှိ။

<< >>

လက်ဝဲနှင့်လက်ယာပြောင်းကုန်ပြီ။ သာကိန်း operands များအတွက်သက်တမ်းရှိ။ တစ်ဦးကညာဘက်ကိုပြောင်းကုန်ပြီအမြဲနိမိတ်လက္ခဏာနည်းနည်းပျံ့နှံ့ရောက်ရှိသွားသည်။

<> <=> =

boolean ထက်နည်း, သာ. ကြီးမြတ်, လျော့နည်းသို့မဟုတ်တန်းတူညီမျှခြင်း, ထက် သာ. ကြီးမြတ်သို့မဟုတ်ညီမျှ။ အခြေအနေကို 0 င်မဟုတ်ရင်, မှန်သည်ဆိုပါကတစ်ဦးချင်းစီအော်ပရေတာ 1 ထုတ်လုပ်သည်။ ဤရွေ့ကားအော်ပရေတာကိစ္စ string ကိုနှိုင်းယှဉ်ရာတွင်အသုံးပြုသည်သော, ညှို့အဖြစ်ဂဏန်း operands မှလျှောက်ထားနိုင်ပါသည်။

==! =

တန်းတူနှင့်တန်းတူမဟုတ် boolean ။ တစ်ခုချင်းစီကိုအော်ပရေတာတစ်ဦးသုည / ရလဒျတစျခုထုတ်လုပ်သည်။ အားလုံး operand အမျိုးအစားများများအတွက်သက်တမ်းရှိ။

&

bit ပညာရှိနှင့်။ သာကိန်း operands များအတွက်သက်တမ်းရှိ။

^

bit ပညာရှိသီးသန့် OR ။ သာကိန်း operands များအတွက်သက်တမ်းရှိ။

|

bit ပညာရှိ OR ။ သာကိန်း operands များအတွက်သက်တမ်းရှိ။

&&

ယုတ္တိဗေဒနှင့်။ မဟုတ်ရင်နှစ်ဦးစလုံး operands Non-သုညလျှင်, 1 ရလဒ်ထုတ်လုပ် 0 င်။ boolean နှင့်ဂဏန်း (ကိန်းသို့မဟုတ် floating-point) အတွက်သက်တမ်းရှိသာ operands ။

||

logical OR ။ နှစ်ဦးစလုံး operands မဟုတ်ရင်သုည, 1 မှန်လျှင်တစ်ဦး 0 င်ရလဒ်ထုတ်လုပ်သည်။ boolean နှင့်ဂဏန်း (ကိန်းသို့မဟုတ် floating-point) အတွက်သက်တမ်းရှိသာ operands ။

x က? y က: z

အကယ်. -ထို့နောက်-တခြား, C တို့၌ရှိသကဲ့သို့ x ကို Non-သုညတန်ဖိုးလျှင်, ထိုရလဒ်က y ၏တန်ဖိုးသည်။ ဒီလိုမှမဟုတ်ရင်ရလဒ် z ရဲ့တန်ဖိုးဖြစ်ပါတယ်။ အဆိုပါ x ကို operand တစ်ဂဏန်းတန်ဖိုးကိုရှိရမည်။

တစ်ဦးချင်းစီအော်ပရေတာများကထုတ်လုပ်ရလဒ်များအပေါ်အသေးစိတ်များအတွက်ကို C ကို manual ကြည့်ရှုပါ။ အဆိုပါအားလုံးသည် ထို binary အော်ပရေတာ အုပ်စုကို left-to-ညာဘက်အတူတူစားပေးမှုအဆင့်ကိုအတွင်း။ ဥပမာ, command ကို

* 2 expr 4 <7

ပြန် 0 င်။

အဆိုပါ &&, || နှင့်? အော်ပရေတာသူတို့ရလဒ်ကိုဆုံးဖြတ်ရန်မလိုအပ်လျှင် operands အကဲဖြတ်ကြသည်မဟုတ်ဆိုလိုတာကရုံကို C ၌ရှိသကဲ့သို့, '' `` ပျင်းရိအကဲဖြတ် '' ရှိသည်။ ဥပမာ, command ကိုအတွက်

expr {$ v? [တစ်]: [ခ]}

တစ်ဦးတည်းသာ [တစ်] ဒါမှမဟုတ် [ခ] အမှန်တကယ် $ v ၏တန်ဖိုးအပေါ်မူတည်ပြီးအကဲဖြတ်လိမ့်မည်။ တစ်ခုလုံးကိုစကားရပ်ဆီကိုဦးအတွက်ပူးတွဲလျှင်ဤသာမှန်ကြောင်း, သို့သော်မှတ်ချက်; မဟုတ်ရင်, ထို TCL parser ကိုပု expr command ကိုသွန်းလောင်းပေးမတိုင်မီနှစ်ဦးစလုံး [တစ်] နှင့် [ခ] အကဲဖြတ်ပါလိမ့်မယ်။

သင်္ချာ Functions များ

TCL အသုံးအနှုန်းတွေအတွက်အောက်ပါသင်္ချာ functions တွေထောက်ခံပါတယ်:

int sinh cos fmod ပတ်ပတ်လည်မျက်နှာကျက် hypot အပြစ်တရား atan2 ABS cosh sqrt acos log နှစ်ဆ log10 srand asin EXP Pow tan atan ကြမ်းပြင်ကျပန်း tanh

ABS (arg)

arg ရဲ့ absolute value Returns ။ Arg integer ဖြစ်တဲ့အတွက်သို့မဟုတ် floating-point ဖြစ်စေဖြစ်နိုင်သည်နှင့်, ရလဒ်တူညီ form မှာပြန်ရောက်နေပါတယ်။

acos (arg)

အကွာအဝေးအတွက် arg ၏ကို arc ကိုဆိုင်း Returns [0, pi] radians ။ Arg အကွာအဝေး [-1,1] အတွက်ဖြစ်သင့်ပါတယ်။

asin (arg)

အကွာအဝေးအတွက် arg ၏ကို arc sine Returns [-pi / 2, pi / 2] radians ။ Arg အကွာအဝေး [-1,1] အတွက်ဖြစ်သင့်ပါတယ်။

atan (arg)

အကွာအဝေးအတွက် arg ၏ကို arc တန်းဂျ Returns [-pi / 2, pi / 2] radians ။

atan2 (x, y)

အကွာအဝေး [-pi, pi] radians အတွက်က y / x ရဲ့ကို arc တန်းဂျ Returns ။ x နှင့် y ကနှစ်ဦးစလုံး 0 င်မဖြစ်နိုင်ပါ။

မျက်နှာကျက် (arg)

arg ထက်မနည်းအသေးဆုံးကိန်းရဲ့တန်ဖိုးကို Returns ။

cos (arg)

radians အတွက်တိုင်းတာ, arg ၏ဆိုင်း Returns ။

cosh (arg)

arg ၏ခြဲ့ကားပွောကိုဆိုင်း Returns ။ ရလဒ်အနေနဲ့လျတ်ဖြစ်ပေါ်စေမည်ဟုဆိုလျှင်, မှားယွင်းမှုတစ်ခုပြန်ရောက်နေပါတယ်။

နှစ်ဆ (arg)

arg တစ်ဦးရေပေါ်တန်ဖိုးကိုဖြစ်လျှင်, arg ပြန်လည်ရောက်ရှိ, မဟုတ်ရင် floating မှ arg ပြောင်းပေးနှင့်ပြောင်းလဲတန်ဖိုးကို return ပွနျ။

EXP (arg)

အီး ** arg အဖြစ်သတ်မှတ်, arg ၏အဆ Returns ။ ရလဒ်အနေနဲ့လျတ်ဖြစ်ပေါ်စေမည်ဟုဆိုလျှင်, မှားယွင်းမှုတစ်ခုပြန်ရောက်နေပါတယ်။

ကြမ်းပြင် (arg)

arg ထက် သာ. ကြီးမြတ်အကြီးဆုံးအရေးပါသောတန်ဖိုးကို Returns ။

fmod (x, y)

y ကအားဖြင့် x ရဲ့ဌာနခွဲများ၏ရေပေါ်-အမှတ်ကျန်ရှိသော Returns ။ y က 0 င်ဖြစ်လျှင်, မှားယွင်းမှုတစ်ခုပြန်ရောက်နေပါတယ်။

hypot (x, y)

တစ်ဦးကို right-angled တြိဂံ (က x * X + y ကို * y က) ၏ hypotenuse ၏အရှည် Computes ။

int (arg)

arg အနေနဲ့ integer ဖြစ်တဲ့အတွက်တန်ဖိုးအားဖြစ်တယ်ဆိုရင်, arg ပြန်လည်ရောက်ရှိ, မဟုတ်ရင်ခြင်းကိုအားဖြင့်ကိန်းမှ arg ပြောင်းပေးနှင့်ပြောင်းလဲတန်ဖိုးကို return ပွနျ။

မှတ်တမ်း (arg)

arg ၏သဘာဝလော်ဂရစ်သမ် Returns ။ Arg တစ်ဦးအပြုသဘောတန်ဖိုးကိုဖြစ်ရမည်။

log10 (arg)

arg ၏အခြေစိုက်စခန်း 10 ခုလော်ဂရစ်သမ် Returns ။ Arg တစ်ဦးအပြုသဘောတန်ဖိုးကိုဖြစ်ရမည်။

Pow (x, y)

ပါဝါ y ကိုမှထမြောက်တော်မူ x ရဲ့တန်ဖိုးကို Computes ။ x ကအနုတ်ဆိုလျှင်, y ကိုတစ်ဦး integer ဖြစ်တဲ့အတွက်တန်ဖိုးအားဖြစ်ရပါမည်။

ကျပန်း ()

တစ်ဦးရေပေါ်အမှတ်သုညကနေပဲဒီထက်တဦးတည်းထက်မှနံပါတ်သို့မဟုတ်, သင်္ချာဝေါဟာရများအတွက်အကွာအဝေး [0,1) Returns ။ အမျိုးအနွယ်ကိုစက်၏ပြည်တွင်းရေးနာရီမှလာဒါမှမဟုတ် srand function ကိုနှင့်အတူလက်စွဲသတ်မှတ်ထားနိုင်ပါသည်။

ပတ်ပတ်လည် (arg)

arg အနေနဲ့ integer ဖြစ်တဲ့အတွက်တန်ဖိုးအားဖြစ်တယ်ဆိုရင်, arg ပြန်လည်ရောက်ရှိ, မဟုတ်ရင်ရှာနိုင်ပါတယ်အားဖြင့်ကိန်းမှ arg ပြောင်းပေးနှင့်ပြောင်းလဲတန်ဖိုးကို return ပွနျ။

အပြစ်တရား (arg)

radians အတွက်တိုင်းတာ, arg ၏ sine Returns ။

sinh (arg)

arg ၏ခြဲ့ကားပွော sine Returns ။ ရလဒ်အနေနဲ့လျတ်ဖြစ်ပေါ်စေမည်ဟုဆိုလျှင်, မှားယွင်းမှုတစ်ခုပြန်ရောက်နေပါတယ်။

sqrt (arg)

arg ၏စတုရန်းအမြစ် Returns ။ Arg Non-အနုတ်လက္ခဏာဖြစ်ရပါမည်။

srand (arg)

တစ်ခုကိန်းဖြစ်ရမည်သော arg သည်, ကျပန်းနံပါတ်တစ်ခုမီးစက်များအတွက်အမျိုးအနွယ်ကို reset ကိုအသုံးပြုသည်။ ကြောင်းအမြိုးအနှယျမှပထမဦးဆုံးကျပန်းနံပါတ်တစ်ခု Returns ။ တစ်ခုချင်းစီကိုစကားပြန်၎င်း၏ကိုယ်ပိုင်အမြိုးအနှယျရှိပါတယ်။

tan (arg)

radians အတွက်တိုင်းတာ, arg ၏တန်းဂျ Returns ။

tanh (arg)

arg ၏ခြဲ့ကားပွောတန်းဂျ Returns ။

ဤအ predefined function တွေကိုအပြင်, applications များ Tcl_CreateMathFunc () ကိုသုံးပြီးနောက်ထပ် function တွေကိုသတ်မှတ်လိမ့်မည်။

အမျိုးအစားများ, လျှံများနှင့် Precision

ကိန်းနဲ့ပတ်သက်တဲ့အားလုံးပြည်တွင်းရေးကွန်ပျူတာကို C အမျိုးအစားရှည်လျားပြုနေကြပြီး, floating-point ပါဝင်သောအားလုံးပြည်တွင်းရေး computing နှစ်ဆကို C အမျိုးအစားပြုနေကြသည်။ floating-point အဖြစ် string ကိုပြောင်းလဲတဲ့အခါ, ထပ်ကိန်းလျတ်တစ် TCL အမှားထဲမှာရှာဖွေတွေ့ရှိခြင်းနှင့်ရလဒ်များကိုဖြစ်ပါတယ်။ ဒါကြောင့်စိတ်မချရအဖြစ်မှတ်ယူသင့်ဒါ string ကိုကနေ integer ဖြစ်တဲ့အတွက်ဖို့ဘာသာပြောင်းအဘို့, လျတ်၏ထောက်လှမ်းဒေသခံကို C စာကြည့်တိုက်အတွက်အချို့လုပ်ရိုးလုပ်စဉ်၏အမူအကျင့်ပေါ်မှာမူတည်ပါတယ်။ မည်သည့်ကိစ္စတွင်ခုနှစ်, integer ဖြစ်တဲ့အတွက်လျတ်နှင့် underflow ယေဘုယျအားဖြင့်အလယ်အလတ်ရလဒ်များအတွက်ယုံကြည်စိတ်ချရသောတွေ့ရှိကြသည်မဟုတ်။ Floating-အမှတ်လျတ်နှင့် underflow ယေဘုယျအားဖြင့်တော်တော်လေးစိတ်ချသောဟာ့ဒ်ဝဲကပံ့ပိုးထားတဲ့ဘွဲ့မှရှာဖွေတွေ့ရှိနေကြသည်။

လိုအပ်အဖြစ်ကိန်းများအတွက်ပြည်တွင်းရေးကိုယ်စားပြု, floating-point များနှင့် string ကို operands ကြားတွင်ကူးပြောင်းခြင်းကိုအလိုအလျောက်ပြုမိသည်။ အချို့သော floating-point အရေအတွက်ကမိတ်ဆက်သည်တိုင်အောင်ဂဏန်းသင်္ချာကွန်ပျူတာ, ကိန်း floating-point ကိုအသုံးပြုသည်အရာသည်နောက်, အသုံးပြုကြသည်။ ဥပမာ,

expr 5/4

ပြန် 1, နေစဉ်

expr 5 / 4.0 expr 5 / ([string ကိုအရှည် "abcd"] + 0.0)

နှစ်ဦးစလုံး 1.25 ပြန်သွားပါ။ Floating-အမှတ်တန်ဖိုးများကိုအမြဲတစ်ဦး `` နဲ့အတူပြန်လာသောနေကြသည်။ '' 'သို့မဟုတ်တစ်ဦးက e သူတို့ကိန်းတန်ဖိုးတွေကိုတူမည်မဟုတ်ကြောင်းနိုင်အောင်။ ဥပမာ,

expr 20.0 / 5.0

ပြန် 4.0,4

string စစ်ဆင်ရေး

ဟူသောအသုံးအနှုနျးဆန်းစစ်သုံးသပ်တဲ့အခါတတ်နိုင်သမျှ integer ဖြစ်တဲ့အတွက်သို့မဟုတ် floating-point အဖြစ်နှိုင်းယှဉ်လုပ်ဖို့ကြိုးစားပါတယ်ပေမယ့် string တန်ဖိုးများကို, နှိုင်းယှဉ်အော်ပရေတာများ၏ operands အဖြစ်အသုံးပြုနိုင်ပါသည်။ တစ်ဦးနှိုင်းယှဉ်၏ operands များထဲမှတစ်ဦး string ကိုတစ်ခုဖြစ်သည်နှင့်အခြားတစ်ဦးဂဏန်းတန်ဖိုးကိုရှိပြီး, ထိုဂဏန်း operand floating-point တန်ဖိုးများကို number နှင့်% ပါ g များအတွက်ကို C sprintf format နဲ့သတ်မှတ်ထားတဲ့% ဃသုံးပြီးပြန်တစ်ဦး string ကိုကူးပြောင်းသည်။ အကယ်. ဥပမာအားဖြင့်, ပညတ်တော်

expr { "0x03"> "2"} expr { "0y" < "0x12"}

ပထမဦးဆုံးအနှိုင်းယှဉ် 1. နှစ်ဦးစလုံးပြန်လာကိန်းနှိုင်းယှဉ်သုံးပြီးပြု, ဒုတိယ operand string ကို 18 ကူးပြောင်းပြီးနောက်ဒုတိယ string ကိုနှိုင်းယှဉ်သုံးပြီးပြုမိသည်။ သောကြောင့်အခါတိုင်းတတ်နိုင်သမျှနံပါတ်များအဖြစ်တန်ဖိုးများကိုဆက်ဆံဖို့ TCL ရဲ့သဘောထားကို, အဲဒါကိုသင်အမှန်တကယ် string ကိုနှိုင်းယှဉ်ချင်နှင့် operands များ၏တန်ဖိုးများကိုမတရားဖြစ်နိုင်ပါတယ်သည့်အခါ == တူသောအော်ပရေတာသုံးစွဲဖို့ယေဘုယျအားဖြင့်အကောင်းတစ်စိတ်ကူးမျှမက, ဒါကြောင့်အစား string ကို command ကိုသုံးဤကိစ္စများတွင်ပိုမိုကောင်းမွန်ပါတယ်။

performance ကိုစဉ်းစား

အကောင်းဆုံးကိုမြန်နှုန်းအဘို့ဆီကိုဦးအတွက်အသုံးအနှုနျးမြားနှငျ့အသေးငယ်ဆုံးသိုလှောင်မှုလိုအပ်ချက်များကိုခိုင်ခံ့။ ဒါက TCL bytecode compiler ကိုအကောင်းဆုံးကုဒ်ထုတ်လုပ်ဖို့ခွင့်ပြုပါတယ်။

အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်းအသုံးအနှုန်းတွေနှစ်ကြိမ်အစားထိုးနေကြပါတယ်: တစ်ချိန်က TCL parser ကိုအားဖြင့်၎င်း, တစ်ချိန်က expr command ကိုဖြင့်ပြုလုပ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်, ပညတ်တော်

3 set ကိုခ {$ တစ်ဦး + 2} expr $ ခ * 4 သတ်မှတ်ထား

အဆိုပါ TCL parser ကိုပု variable ကိုခများအတွက်ပထမဦးဆုံးအစားထိုး $ တစ်ဦး + 2 လိမ့်မည်, ထို့နောက် expr command ကိုဟူသောအသုံးအနှုနျး $ တစ်ဦး + 2 * 4 အကဲဖြတ်ကြလိမ့်မည်ဖြစ်သောကြောင့် 11 ပြန်လာ, 4 ဤသည်တစ်ဦးမျိုးစုံဖြစ်ပါတယ်မဟုတ်ပါဘူး။

အများစုမှာအသုံးအနှုန်းတွေအစားထိုးတဲ့ဒုတိယအကျော့မလိုအပ်ပါဘူး။ သူတို့ဆီကိုဦးအတွက်ပူးတွဲသို့မဟုတ်လျှင်ကြသည်မဟုတ်ဖြစ်စေ, သူတို့ရဲ့ variable ကိုနှင့် command ကိုအစားထိုးသူတို့ကိုယ်သူတို့အစားထိုးလိုအပ်မဂဏန်းသို့မဟုတ်ညှို့လိုက်လျော။ အနည်းငယ် unbraced အသုံးအနှုန်းတွေအစားထိုးနှစ်ခုကျည်လိုအပ်ပါတယ်ဘာဖြစ်လို့လဲဆိုတော့သို့သော်သည်, bytecode compiler ကအပိုဆောင်းညွှန်ကြားချက်ဤအခြေအနေကိုကိုင်တွယ်ရန်ထုတ်လွှတ်ရပေမည်။ စျေးအကြီးဆုံးကုဒ် command ကိုအစားထိုးဆံ့ကြောင်း unbraced အသုံးအနှုန်းတွေဘို့လိုအပ်ပါသည်။ ဤရွေ့ကားအသုံးအနှုန်းတွေအသစ်သောကုဒ်ဟူသောအသုံးအနှုနျးကွပ်မျက်ခံရခြင်းဖြစ်သည်တစ်ခုချင်းစီကိုအချိန်ထုတ်လုပ်အားဖြင့်အကောင်အထည်ဖော်ရမည်ဖြစ်သည်။

keywords

ဂဏန်းသင်္ချာ, boolean , နှိုင်းယှဉ်, စကားရပ်, fuzzy နှိုင်းယှဉ်

အရေးကြီး: command တစ်ခုကိုသင်၏အထူးသဖြင့်ကွန်ပျူတာပေါ်တွင်အသုံးပြုသည်ကိုမည်သို့ကြည့်ဖို့လူကို command ကို (% သည်လူ) ကိုသုံးပါ။