Linux / Unix Command: expr

Ngalan

expr - Susiha ang usa ka ekspresyon

Sinopsis

expr arg ? arg arg ... ?

Ang mga concatenates arg 's (nagdugang sa mga luna sa separator sa taliwala kanila), gibana-bana ang resulta isip usa ka ekspresyon sa Tcl, ug gibalik ang bili. Ang mga operators nga gitugutan sa mga ekspresyon sa Tcl usa ka subset sa mga operators nga gitugutan sa mga ekspresyon sa C, ug kini adunay susama nga kahulugan ug precedence ingon nga katugbang nga C operators. Ang mga ekspresyon hapit kanunay mohatag og mga resulta sa numeric (integer o mga floating-point values). Pananglitan, ang ekspresyon

expr 8.2 + 6

nag-evaluate sa 14.2. Ang tcl nga mga ekspresyon lahi gikan sa mga ekspresyon sa C sa pamaagi nga gipatuman ang gipatuman. Usab, ang mga ekspresyon sa Tcl nagasuporta sa dili mga numerong operand ug pagtandi sa mga hilisgutan.

Naglihok

Ang usa ka ekspresyon sa Tcl naglangkob sa usa ka kombinasyon sa mga operand, mga operator, ug parentesis. Ang puting luna mahimong gamiton tali sa mga operand ug mga operator ug parentheses; kini wala panumbalinga sa mga panudlo sa ekspresyon. Kon mahimo, ang mga operan gihubad isip mga bili sa integer. Ang mga bili sa integer mahimong matino sa desimal (ang normal nga kaso), sa octal (kung ang unang karakter sa operand 0 ), o sa hexadecimal (kung ang unang duha ka mga karakter sa operand 0x ). Kon ang usa ka operand walay usa sa mga format sa integer nga gihatag sa ibabaw, nan kini pagtratar isip usa ka numero nga naglutaw kon kini posible. Ang mga floating-point numbers mahimo nga matino sa bisan unsang mga paagi nga gidawat sa ANSI-compliant C compiler (gawas nga ang f , F , l , ug L suffixes dili tugutan sa kadaghanan nga mga instalasyon). Pananglitan, ang tanan nga mosunod mao ang balido nga mga numero nga naglutaw: 2.1, 3., 6e4, 7.91e + 16. Kung walay numeric interpretation posible, dayon ang usa ka operand gibiyaan ingon nga lambo (ug usa lamang ka limitado nga pundok sa mga operators ang mahimo nga magamit niini).

Ang mga operande mahimong matino sa bisan unsang mosunod nga mga paagi:

[1]

Ingon nga numeric value, bisan integer o floating-point.

[2]

Ingon usa ka variable nga Tcl, gamit ang standard $ notation. Ang bili sa baryohanon gamiton isip operand.

[3]

Ingon usa ka lambo nga gilakip sa duha-nga kutay. Ang ekspresyon nga parser maghimo sa backslash, variable, ug command substitutions sa impormasyon tali sa mga kinutlo, ug gamiton ang resulta nga bili sama sa operand

[4]

Ingon usa ka lambo nga gilibotan sa mga brace. Ang mga karakter tali sa open brace ug matching matching brace gamiton nga operand nga walay bisan unsang kapuli.

[5]

Ingon sa usa ka Tcl nga sugo nga gilibotan sa mga braket. Ang sugo ipatuman ug ang resulta niini magamit isip operand.

[6]

Ingon nga usa ka mathematical function kansang mga argumento adunay bisan unsang mga porma sa ibabaw alang sa mga operand, sama sa sala ($ x) . Tan-awa sa ubos alang sa usa ka listahan sa mga gituyo nga gimbuhaton

Kung diin ang mga kapuli nga mahitabo sa ibabaw (sama sa gikutlo nga mga hilo), kini gipahigayon pinaagi sa mga panudlo sa ekspresyon. Bisan pa niana, ang usa ka dugang nga layer sa pagpuli mahimo nang nahimo pinaagi sa command parser sa wala pa gitawag ang processor nga ekspresyon. Sama sa gihisgutan sa ubos, kasagaran labing maayo nga ipalibut ang mga pahayag sa mga kuptanan aron mapugngan ang command parser sa pagbuhat sa mga kapuli sa mga sulod.

Alang sa pipila ka mga panig-ingnan sa yano nga mga ekspresyon, ibutang ang variant a adunay bili 3 ug ang variable b adunay bili 6. Unya ang mga sugo sa wala nga kilid sa matag usa sa mga linya sa ubos moresulta sa bili sa tuo nga bahin sa linya:

exr 3.1 + + $ a6.1 expr 2 + "$ a. $ b" 5.6 expr 4 * [llength "6 2"] 8 expr {{pulong usa} <"pulong nga $ a"} 0

Mga operator

Ang mga balidong operators gilista sa ubos, gipundok sa nagkunhod nga han-ay sa pagkasunod:

- + ~!

Unary minus, unary plus, bit-wise DILI, makataronganon DILI. Walay usa niini nga mga operand mahimo nga ipatuman sa mga operat sa pisi, ug dili maalamon DILI mahimo nga magamit lamang sa mga integer.

* /%

Pagpadaghan, pagbahin, nahibilin. Walay usa niini nga mga operand mahimo nga ipatuman sa mga operat sa kuwerdas, ug ang nahibilin mahimo nga ipatuman lamang sa mga integer. Ang nahibilin aduna'y sama nga timaan sa magbubuhat ug usa ka hingpit nga bili mas gamay kay sa magbubuhat.

+ -

Idugang ug kunhoran. Angayan alang sa bisan unsang numeric operands.

<< >>

Wala ug tuo nga pagbalhin. Ang valid alang sa integer lang ang gigamit. Ang husto nga paglihok kanunay nga nagpakaylap sa timaan sa ilhanan.

<> <=> =

Ang Boolean mas menos, mas dako, dili kaayo o parehas, ug labaw pa kay sa o patas. Ang matag operator magpagawas 1 kung ang kondisyon tinuod, 0 kon dili. Kini nga mga operators mahimo nga magamit sa mga hilo ingon man mga numerong operand, nga diin gigamit ang pagkumpara sa hilisgutan.

==! =

Ang Boolean parehas ug dili managsama. Ang matag operator nagpatunghag zero / one nga resulta. Ang tanan nga matang sa operand.

&

Bit-wise AND. Ang valid alang sa integer lang ang gigamit.

^

Bit-wise exclusive OR. Ang valid alang sa integer lang ang gigamit.

|

Dili maalamon O. Ang valid alang sa integer lang ang gigamit.

&&

LOGIKO UG. Naghimo og usa ka resulta kon ang mga operand dili mga zero, 0 kon dili. Ang valid alang sa boolean ug numeric (integers o floating-point) lamang ang gipalihok.

||

Makataronganon O. Naghimo og usa ka 0 resulta kon ang mga operand ang zero, 1 kung dili. Ang valid alang sa boolean ug numeric (integers o floating-point) lamang ang gipalihok.

x ? y : z

Kon-kaniadto pa, ingon sa C. Kung ang x mag-evaluate sa dili zero, nan ang resulta mao ang bili sa y . Kay kon dili, ang resulta mao ang bili sa z . Ang x operand kinahanglan adunay numeric value.

Tan-awa ang manwal sa C alang sa dugang mga detalye sa mga resulta nga gihimo sa matag operator. Ang tanan nga grupo sa mga binary operators nga wala sa tuo sulod sa sama nga sumbanan nga lebel. Pananglitan, ang sugo

expr 4 * 2 <7

mobalik 0.

Ang && , || , ug?: ang mga operators adunay "lazy evaluation", sama sa C, nga nagpasabot nga ang mga operand wala masusi kung wala sila kinahanglan aron mahibal-an ang resulta. Pananglitan, sa sugo

expr {$ v? [a]: [b]

usa lamang sa [a] o [b] ang pagatun-an gayud, depende sa bili sa $ v . Hinumdomi, hinoon, nga kini tinuod lamang kung ang tibuok nga pamulong gisulod sa mga kuptanan; kon dili, ang Tcl parser mag-evaluate sa duha [a] ug [b] sa dili pa kini gamiton ang expr nga sugo.

Mga Katungdanan sa Matematika

Gisuportahan sa Tcl ang mosunod nga mga gimbuhaton sa matematika sa mga ekspresyon:

abs cosh log sqrt acos double log10 srand as exp expow tan atan floor rand tanh atan2 fmod round ceil hypot sin cos int sinh

abs ( arg )

Mibalik ang hingpit nga bili sa arg . Ang arg mahimong bisan usa ka integer o floating-point, ug ang resulta gibalik sa samang porma.

acos ( arg )

Mibalik ang arc cosine sa arg , sa hanay [0, pi] nga mga radians. Ang Arg kinahanglan nga anaa sa range [-1,1].

asin ( Arg )

Mibalik ang arc sine of arg , sa range [-pi / 2, pi / 2] nga mga radians. Ang Arg kinahanglan nga anaa sa range [-1,1].

atan ( arg )

Gipabalik ang arc tangent sa arg , sa hanay [-pi / 2, pi / 2] nga mga radians.

atan2 ( x, y )

Mibalik ang arc tangent sa y / x , sa hanay [-pi, pi] nga mga radians. x ug y dili pareho nga 0.

ceil ( arg )

Gipabalik ang pinakagamay nga bili sa integer nga dili moubos sa arg .

cos ( arg )

Mibalik ang cosine sa arg , gisukod sa mga radians.

cosh ( arg )

Mibalik ang hyperbolic cosine sa arg . Kon ang sangputanan maoy hinungdan sa usa ka nagaawas, usa ka sayop ang ibalik.

Doble ( Arg )

Kon ang arg mao ang usa ka naglutaw nga bili, mobalik arg , kung dili mag-convert sa arg sa paglutaw ug pagbalik sa nakabig nga bili.

exp ( arg )

Mibalik ang exponential sa arg , nga gihubit nga e ** arg . Kon ang sangputanan maoy hinungdan sa usa ka nagaawas, usa ka sayop ang ibalik.

salog ( arg )

Gipabalik ang pinakadako nga integral nga bili nga dili labaw kay sa arg .

fmod ( x, y )

Gipabalik ang nahibilin nga nahibilin nga bahin sa pagbahin sa x pinaagi sa y . Kung y ang 0, usa ka sayop ang ibalik.

pagpaubos ( x, y )

Pag-compute sa gitas-on sa hypotenuse sa usa ka right-angled triangle ( x * x + y * y ).

int ( arg )

Kung arg ang usa ka integer nga bili, magbalik arg , kung dili mag-convert sa arg sa integer pinaagi sa truncation ug ibalik ang nakabig nga bili.

log ( arg )

Mibalik sa natural nga logarithm sa arg . Ang arg kinahanglan usa ka positibo nga bili.

log10 ( arg )

Pagbalik sa base 10 logarithm sa arg . Ang arg kinahanglan usa ka positibo nga bili.

pow ( x, y )

Pag-compute sa bili sa x nga gipataas ngadto sa gahum nga y . Kung ang negatibo x , ang y kinahanglan usa ka bili nga integer.

rand ()

Gipabalik ang numero sa naglutaw nga tuldok gikan sa zero ngadto sa dili kaayo usa o, sa mga termino sa matematika, ang gidak-on [0,1]. Ang binhi naggikan sa internal nga orasan sa makina o mahimong himoon nga manwal gamit ang srand function.

round ( arg )

Kung arg ang usa ka integer value, mobalik arg , kung dili mag-convert sa arg sa integer pinaagi sa paglibot ug pagbalik sa nakumbertir nga bili.

sala ( Arg )

Mibalik ang sine sa arg , gisukod sa mga radians.

sinh ( Arg )

Gipabalik ang hyperbolic sine sa arg . Kon ang sangputanan maoy hinungdan sa usa ka nagaawas, usa ka sayop ang ibalik.

sqrt ( arg )

Gipabalik ang square root sa arg . Ang Arg kinahanglan nga dili negatibo.

srand ( arg )

Ang arg , nga kinahanglan nga usa ka integer, gigamit aron i-reset ang binhi alang sa random number generator. Gipabalik ang unang random nga numero gikan sa binhi. Ang matag tighubad adunay kaugalingong binhi.

tan ( arg )

Mibalik ang pagkahilo sa arg , gisukod sa mga radians.

tanh ( arg )

Gipabalik ang hyperbolic tangent of arg .

Gawas pa sa mga gihan-ay nga mga gimbuhaton, ang mga aplikasyon mahimong magpasabut sa dugang nga mga gimbuhaton gamit ang Tcl_CreateMathFunc ().

Mga Type, Overflow, ug Precision

Ang tanan nga internal computations nga naglakip sa mga integer nga gihimo sa C type nga gitas-on , ug ang tanan nga internal computations nga naglangkob sa floating-point gihimo sa C type double . Sa pag-usab sa usa ka lambo ngadto sa naglutaw nga tuldok, ang exponent overflow nakita ug moresulta sa usa ka Tcl error. Kay ang pagkakabig ngadto sa integer gikan sa lambo, ang pagtuki sa overflow nagadepende sa kinaiya sa pipila ka rutina sa lokal nga librarya sa C, busa kini kinahanglan nga isipon nga dili masaligan. Sa bisan unsa nga kaso, ang integer nga nagaawas ug ang pag-agos sa kasagaran dili mahibal-an nga masaligan alang sa mga resulta sa intermediate. Ang pag-agas sa baha ug pag-agas sa ilalom namatikdan sa gidak-on nga gisuportahan sa hardware, nga sa kasagaran kasaligan.

Ang pagkakabig taliwala sa mga hulagway sa sulod alang sa integer, floating-point, ug string nga mga operasyon gihimo awtomatiko kung gikinahanglan. Alang sa mga pag-agum sa aritmetika, ang mga integer nga gigamit hangtud ang pipila ka mga floating-point number gipaila, nga human niana gigamit ang floating-point. Pananglitan,

expr 5/4

mobalik 1, samtang

expr 5 / 4.0 expr 5 / ([hikog gitas-on "abcd"] + 0.0)

ang duha nagbalik 1.25. Ang mga floating-point values ​​kanunay ibalik nga may `` . '' o usa ka e aron dili sila tan-awon sama sa mga bili sa integer. Pananglitan,

expr 20.0 / 5.0

mobalik 4.0 , dili 4 .

String Operations

Ang mga mithi sa mga sulud mahimong gamiton isip mga operand sa mga operator sa pagtandi, bisan pa ang ekspresyon sa ekspresyon naningkamot sa paghimo sa mga pagtandi isip integer o naglutaw nga punto kon mahimo. Kung ang usa sa mga operand sa usa ka pagtandi usa ka pisi ug ang usa adunay numeric value, ang numeric operand nga nakabalik ngadto sa usa ka pisi gamit ang C sprintf format specifier % d alang sa mga integer ug % g alang sa floating-point values. Pananglitan, ang mga sugo

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

Ang duha nagbalik 1. Ang una nga pagtandi gihimo gamit ang pagtandi sa integer, ug ang ikaduha gihimo gamit ang pagtandi tali sa ikaduha nga operand nga nakabig ngadto sa hugpong 18 . Tungod sa kalagmitan ni Tcl sa pagtratar sa mga bili ingon nga mga numero kutob sa mahimo, kini dili kasagaran usa ka maayo nga ideya sa paggamit sa mga operator sama sa == kung gusto nimo ang pagtandi tali sa mga string ug ang mga bili sa mga operand mahimo nga dili gusto; mas maayo sa niini nga mga kaso nga gamiton ang command string sa baylo.

Pagkonsidera sa Pagganap

Ipahayag ang mga ekspresyon sa mga kuptanan alang sa pinakamaayo nga gikusgon ug ang pinakagamay nga mga kinahanglanon sa pagtipig. Kini nagtugot sa Tcl bytecode compiler sa pagmugna sa pinakamaayong code.

Sama sa gihisgutan sa ibabaw, ang mga ekspresyon gipulihan sa makaduha: sa makausa pinaagi sa Tcl parser ug sa makausa pinaagi sa expr nga sugo. Pananglitan, ang mga sugo

pagbutang sa usa ka 3 set b {$ a + 2} expr $ b * 4

pagbalik 11, dili usa ka multiple sa 4. Kini tungod kay ang Tcl parser una nga mopuli sa $ a + 2 alang sa variable b , unya ang expr nga sugo mag-evaluate sa ekspresyong $ a + 2 * 4 .

Kadaghanan sa mga ekspresyon wala magkinahanglan sa ikaduhang hugna sa mga kapuli. Ang tanan nga mga butang nga gisulod sa mga kuptanan o, kung dili, ang ilang mga variable ug command substitutions naghatag og mga numero o kulbahinam nga dili kinahanglan nga mga kapuli. Bisan pa, tungod kay ang pipila ka wala'y pinalabi nga mga ekspresyon nagkinahanglan og duha ka hugna nga mga kapuli, ang compiler sa bytecode kinahanglan nga mopagawas og dugang nga mga panudlo aron mahatag kini nga sitwasyon. Ang labing mahal nga kodigo gikinahanglan alang sa mga wala'y salabutan nga mga ekspresyon nga adunay mga kapuli nga pagbag-o. Kini nga mga ekspresyon kinahanglan nga ipatuman pinaagi sa pagmugna og bag-ong code matag higayon nga ipahayag ang ekspresyon.

Mga pulong

aritmetika, boolean , itandi, ekspresyon, fuzzy nga pagtandi

Importante: Gamita ang tawo nga sugo ( % man ) aron makita kung giunsa ang usa ka sugo nga gigamit sa imong partikular nga computer.