Linux / Unix Command: expr

Nome

expr - evaluate una espressione

Sinopsia

expr arg ? arg arg ... ?

Cunsiderate di arg 's (aghjunghjendu spazzi separatori entre elle), evalueghja u risultatu cum'è una espressione Tcl, è torna u valore. L'operauriche permettenu in l'espressioni Tcl sò un subestazione di l'uperatore permessi per l'espressioni C, è anu ancu u listessu significatu è a precedenza cum'è l'operatore C riferitu. Espressioni quasi sempri rendenu risultati numerii (valuri integrati o di punti flotanti). Per esempiu, l'espressione

expr 8.2 + 6

evalueghja à 14.2. L'espressioni di Tcl differenu da l'espressioni C in a manera chì l'operandori sò specificate. Inoltre, l'espressioni Tcl support operands numèrici è compagni di chorda.

Operands

A espressione Tcl compone di una cumminazione di operandi, operatorii è parèntesi. U spaziu biancu pò esse usatu entre l'opera è l'operatore è i parèntesi; hè ignurata da l'urdinamentu di l'espressione. Cumu possu l 'operandi sò interpretati cum'è valuri sianu. I valori di l'entera pò esse specificatu in decimal (u casu natu), in octal (se u primu caratteru di l'operand hè 0 ), o in hexadecimale (se i primi dui caratteri di l'operandanu sò 0x ). Sì un operandore ùn hà micca unu di i formi numeriali dati più altu, hè trattu com un numaru di punti flottante si questu hè pussibule. U numeri di punti flotanti pò esse spjegati in quellu di i modi accettati da un cumpilatore C cumpretu di ANSI (eccetu ch'è u f , F , L è suffissi L ùn seranu permessi in a maiò parte di installazioni). Per esempiu, tutte e seguenti sò vali validate numeri di punti flotariamente: 2.1, 3., 6e4, 7.91e + 16. Se ùn hè micca una interpretazione numerica, un operande hè stata mancanti (è solu un settore limitatu di operatori pò esse appiecatu).

I Spiaghitori pò esse specificatu in quellu di e manere seguenti:

[1]

Comu valuru numèricu, o entero o puntu flottante.

[2]

Comu una variable Tcl, utilizendu a notazione standard $ . U valore di a variàbile serà utilizatu cum'è l'operandore.

[3]

Cum'è una chjolla aghjunta in quatru dui. L'espressione generatori annunzià u versatu, varià u sustituzzioni di l'ordine nantu à l'infurmazioni entre i quotes, è utilizate u valore resultanti cum'è l'operandore

[4]

Comu stringa chjappu in armorii. I caratteri trà l'arrampicate è u currezzione certi vicinu seranu usatu cum'è l'operandore senza alcunu sustituzzioni.

[5]

Cum'è un mandatu Tcl inghjustu entre parolle. U cumandimu esse esercitu è ​​u so risultatu serà usatu cum'è l'operandore.

[6]

Comu una funzione matematica quale l'argumintazzioni anu mancu qualchissia di e formi supra in opera, cum'è u peccatu ($ x) . Vede quì sottu una lista di funzioni definitu.

Quandu sò sustituzioni succeduti quì (per esempiu, chjucu chjamati), sò realizati da i struzzioni di l'espressione. In più, una capacità supplementu di sustituzzioni pò esse realizatu da u parser di cumanda prima di u chjaru di l'espressione esistitu. Cumu avete discrittu davanti, u solitu esse megliu d'accettà l'espressioni in i chjappi per impediscenu à u parser di u cumandariu d'esse sustituì in u cuntenutu.

Per unepochi di esprissioni semprici, suppunite a variàbilité a averia u valore 3 è a variàbilevale b averà u valore 6. Dopu u cumandimu à u latu u liceu di ogni linea sottu pruducerà u valore à u latu di a fila:

3,1 expr + $ a6.1 expr 2 + "$ a. $ b" 5,6 expr 4 * [longa "6 2"] 8 expr {{word one} <"word $ a"} 0

Operators

L'operatore validu hè listatu davanti, agrupatu in decretu decretu di precedenza:

- + ~!

Unary minus, unary plus, bit-wise NO, logical NOT. Nisunu di sti operandi pò esse appiicati à manichi di cordelli, è ùn pò micca applicà solu l'intricatu bit-wise.

* /%

Multiplicate, divide, restu. Nisunu di sti operandi pò esse appiicati à l'operandi string, è u restu pò esse applicatu solu à entero. U restu avarà sempre u listessu signu chì u divisore è un valore assolutu più chjuca da u divisore.

+ -

Add and subtract. Vàlida għal kull operand numeriku.

<< >>

Left and right shift. Vale per operandi enti solu. U cambiamentu giustu sempre différence a signa picca.

<> <=> =

Booleanu menu, più grande, menu o ancu, è più grande o equivalenti. Ogni operatore prupone 1 se a cundizione hè vera, 0 altrimenti. Questi operatori pò esse appiicati à e maniche, quantu quant'è numarate i cumandamenti, in quale casu a paragina di stringe hè utilizatu.

==! =

Booleanu ugguali è micca uguali. Ogni operatore produci un risultatu zero / un solu resultu. Vàlidu għal kull tip ta 'operand.

&

Bit-wise AND. Vale per operandi enti solu.

^

Spiaghjolu spiante OR. Vale per operandi enti solu.

|

Bishoxe OR. Vale per operandi enti solu.

&&

Lòggica E. Produce un risurtu 1 si e dui operandori sò micca nziuri, 0 altrimenti. Vàlidi għal operati booleani u numeri (entieri jew flotanti).

||

Lòggica OR. Produce un risurtatu 0 si i dui operandi sò cero, 1 altrimenti. Vàlidi għal operati booleani u numeri (entieri jew flotanti).

x ? y : z

Sì-àvi un altru, cum'è in C. Si x evalueghja à nùn cero, u risultatu hè u valore di y . Inutili, u risultatu hè u valore di z . L'operandumandà deve un valore numericu.

Vede u manual C per più infurmazioni nantu à i risultati fruitanu da ogni operatore. Tuttu u gruppu d' operatore binari aghjustatu da a diritta in u stessu livellu di precedenza. Per esempiu, u cumandimu

expr 4 * 2 <7

torna 0.

A && , || , è ?: L' operaurale anu una "evaluazione passione", cum'è in C, chì significa chì l'operandi ùn sò micca evaluati s'ellu ùn hè micca necessariu per determinar u risultatu. Per esempiu, à u cumandimu

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

solu una di [a] o [b] hè fattificatu, secondu u valore di $ v . Note, però, chì questu hè solu veru si l'espressione sana hè inturniatu in armorii; altri, l'analista Tcl avaliarà dui [a] è [b] per invoca l'ordine expr .

Funzioni Matematica

Tcl soporta a funzioni matematichi in e sprissioni:

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

abs ( arg )

Rituverna u valore assolutu di arg . Argu pò esse o entero o puntu flottante, è u risultatu hè tornatu in a listessa forma.

acos ( arg )

Ritorna l'arc cosinu di arg , in u rigistru [0, pi] radiani. Argu devia esse in questu [-1,1].

asin ( arg )

Ritorna l'arc sine di arg , in u rangimentu [-pi / 2, pi / 2] radiani. Argu devia esse in questu [-1,1].

atan ( arg )

Ritorna l'arc tangent of arg , in u rangimentu [-pi / 2, pi / 2] radiani.

atan2 ( x, y )

Ritorna l'arc tangent of y / x , in a varietà [-pi, pi] radiani. X e Y ùn pò micca esse 0.

ceil ( arg )

Ritorna u più chjuche u valore più chjaru micca arg .

cos ( arg )

Ritorna u cosine di arg , misurata in radiani.

cosh ( arg )

Ritorna u cosinu hiperbòlicu di arg . Se u risultatu puderia pruvucà un bugimentu, un errore torna.

doppia ( arg )

Si arg hè un valore flottante, rende arg , altri converti arg à fluttere è torna u valore convertit.

exp ( arg )

Ritorna l'espunentiariali di arg , definitu cum'è e ** arg . Se u risultatu puderia pruvucà un bugimentu, un errore torna.

pavimentu ( arg )

Rituverna u più maiò u valore integanu più grande chì arg .

fmod ( x, y )

Rituverna u restuurizante di a divisiona di x per y . Se y è 0, un errore hè tornatu.

hypot ( x, y )

Calculà a durata di l'iputenuse di un triangulu giusto ( x * x + y * y ).

int ( arg )

Si arg hè un valore intellu, rende arg , altri converti arg à entero da truncazione è rende u valore convertit.

log ( arg )

Rituverna u logarìmitu naturali di arg . Argu deve esse un valore pusitivu.

log10 ( arg )

Ritorna u basa di 10 logaritm di arg . Argu deve esse un valore pusitivu.

pow ( x, y )

Calculà u valore di x risaltu à u putere è . Sì x hè negativu, è devi esse un valor integru.

rand ()

Rituverna un numaru di punti flottante da zero à pocu menu un unu o, in termi matematii, a varietà [0,1). A sumente vene da u rolu internu di a machina o pò esse uttene manuale cù a funzione di srand.

annata ( arg )

arg hè un valore sanu, torna arg , altri converti arg à entero da rivoluzione è rende u valore convertit.

peccatu ( arg )

Ritorna u sine di argone , misurata in radiani.

sinh ( arg )

Ritorna u sine hyperbòlica di arg . Se u risultatu puderia pruvucà un bugimentu, un errore torna.

sqrt ( arg )

Ritorna l'arcu quadru di arg . Argu deve esse micca negativu.

srand ( arg )

L' arg , chì deve esse un cummerciu, hè utilizzatu per rinvià a semente per u generatore numereali aleatoriu. Rituverna u primu numaru aleatuariu da quella semente. Ogni intrame a so propiu propiu.

tan ( arg )

Ritorna a tangent of arg , medite in radiani.

tanh ( arg )

Rintorni a tangente iperbolica di arg .

In più di sti funzioni predefiniti, l'applicazioni puderanu definisce funzioni supplementari using Tcl_CreateMathFunc ().

Tipi, Overflow, è precisione

Tuttu computazioni internu chì participanu entretenu sò fatti cù u tipu C è longu , è tutti i scrutti interni cù u puntu flottante sò fatti cù u doppia tipu C. Quandu si cunverta una stringa à u puntu flottante, esse detecatu u spurvegenu è risultati in un error Tcl. Per a cunversione à u nucleu da stringa, a deteczione di suluzione dipende da u cumportamentu di parechji rutini in a biblioteca C locale, perchè deve esse cunsideratu micca affidate. In ogni casu, u primu supranamentu è sopraghine ùn sò micca detecati in modu di modu fiduciale per i risultati intermedi. U flussu di crescente di flussu è u flussu sò detecati à u diploma sustene da u hardware, chì hè generale assai abbastanza.

A cunversione trà e rapprisentanu internu per u cumbugliu, u puntale di u puntante è l'operandi di a corda hè stata automaticamente automaticamente. Per i scrutorii aritmetici, i numeri in interduzzioni sò usati finu à chì un numaru di punti flottante hè imprudatu, postu chì quandu u puntu di l'articulu hè utilizzatu. Per esempiu,

expr 5/4

rende 1, mentre

expr 5 / 4.0 expr 5 / ([string length "abcd"] + 0.0)

rinvià u 1.25. Valuri di punti flotante sò sempre tornati cun '` . '' o un e, perchè ùn vurianu micca parechji valuri integri. Per esempiu,

expr 20.0 / 5.0

rende 4.0 , micca 4 .

Operazioni String

I valuta di a String pò esse usata cum'è operandi di l'operatore di paraguni, anche l'espressione di valutaturi prupone à fà comparaison cum entero o di puntu flottante quandu puderà. Sì un unu di l'operandori di una cumparazione hè una stringa è l'altra hà un valore numèricu, l'operandum numérau hè cunverta u ritornu à una stringa cù u sprintf spicificatifumore specifier % d per i entero è % g per i valori di punti flotanti. Per esempiu, i cumandamenti

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

sia tornatu 1. A prima cumparazione hè fatta cù una paragera intima, è u secondu hè fatta cù cumpagnia di corda dopu à u second operandone hè cunvertitu à a stringa 18 . Per via di a tendenza di Tcl per trattà i valori quant'è i numeri sempre chì sia pussibule, ùn hè generale una bona idea di utilizà l'operatore cum'è == quandu vulete veramente una compara di corda è i valori di i cumandamenti pò esse arbitrarii; hè megliu in questi casi per utilizà l'ordine stringa invece.

Rifuccionamentu

Pridendu l'espressioni in chiappe per a megliu veloce è i più chjosi d'accunciamentu. Questu permette à u compilatore bytecode Tcl per generà u megliu codice.

Cumu l'esitatu supra, l'espressioni sò sustituitu duie volte: una volta da l'analista Tcl è una volta da u cumandante expr . Per esempiu, i cumandamenti

set a 3 set b {$ a + 2} expr $ b * 4

11, ùn hè micca un altru di 4. Cumu hè perchè l'analista Tcl primierà sustituverà $ a + 2 per a variàbille b , u ordine expr evaluarà l'espressione $ a + 2 * 4 .

A maiò parte di l'espressioni ùn deve micca una seconda volta di sustituzioni. Sianu sò chjusu in i chjormi o, se ùn avete micca, e so variàbile è u cumandimu sustituìziu pruducenu numeri o strings chì ùn ponu micca esse dumandate sustituzioni. In ogni casu, perchè uni pochi espressioni micca dibraghju necessanu dui rotuli di sustituzioni, u compilatore di bòtgii anu da emettenu infurmazioni supplementari per trattà sta situazione. U codice più caru hè dumandatu per l'espressioni micca dibrezzioni chì cuntenenu i surdati di mandà. Queste l'espressioni duveranu esse implementatu da generazione di u novu còdice cada volta l'esercitu hè esecutatu.

Segni

aritmetica, booleanu , paragunate, spressione, fuzzy comparison

Impurtante: Utilizà l'ordine di u manu ( % man ) per vede cumu u cumandimu hè usatu in u vostru urdinatore particulari.