Ito ang command na dacsexpr na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
dacsexpr - Dacs expression ng wika shell at interpreter
SINOPSIS
dacsexpr [-x] [dacsoptions[1]] [Ginoo] [-e ipahayag] [-n] [-p] [-s] [-h | -tulong] [-pagsusulit]
[--] [filename] [script-arg...]
DESCRIPTION
Ang programang ito ay bahagi ng Dacs suite.
Ang dacsexpr sinusuri ng utility Dacs mga ekspresyon (tingnan dacs.exprs(5)[2]). Kadalasan ay a
kapaki-pakinabang na tulong kapag bumubuo o sumusubok ng mga expression na gagamitin sa mga panuntunan sa kontrol sa pag-access, o
kapag nagde-debug ng mga ACL at mga direktiba sa pagsasaayos. Habang sila ay patuloy na tinutukoy bilang
"mga ekspresyon" para sa makasaysayang mga kadahilanan, naging posible na magsulat ng maliliit na programa, at
ang wika ay maaari ding maging kapaki-pakinabang bilang isang simpleng scripting language na hiwalay sa iba pa
Dacs.
Kung ang isang expression ay ibinigay, ito ay sinusuri at ang resulta ay naka-print sa pamantayan
output. Hindi hihigit sa isang expression ang maaaring tukuyin. Kung ang -q ang bandila ay ibinigay (isa sa
dacsoptions[1]), walang naka-print, pinipigilan ang mga error sa pagsusuri sa expression, at ang
ang programa ay nagtatapos sa isang naaangkop lumabas katayuan[3]; kung hindi ang resulta ay nakasulat sa
ang karaniwang output. Kung hindi a -q watawat ay ibinigay o anumang bandila na kumokontrol sa pag-log
level, pagkatapos ay nakatakda ang antas ng pag-log upang bigyan ng babala ang pag-override sa anumang pag-log ng configuration file
antas ng direktiba; ang pag-uugali na ito ay karaniwang maginhawa.
Kung walang expression na ibinigay, binabasa ng programa ang karaniwang input nito. Kung ang input ay hindi
na nagmumula sa isang terminal type device, ang program ay tumatakbo sa "batch mode" at ang pag-prompt ay
pinigilan; kung hindi, ang programa ay tumatakbo sa "interactive mode". Kapag na-prompt in
interactive na mode, ipasok Tulungan para sa tulong. Kung ang Basahin ang linya(3)[4] functionality noon
na-configure noong binuo ang program, available ang pag-edit at kasaysayan ng command line sa
interactive na mode.
Kung ang programa ay naisakatuparan sa pamamagitan ng "#!" ng system mekanismo, isa o higit pang command line
maaaring magbigay ng mga argumento:
#!/usr/local/dacs/bin/dacsexpr -test
// expect-exact:17
${x} = 17;
Palaging ginagamit ng mga naturang programa ang script file bilang input, kaya walang expression o iba pang file
maaaring tukuyin sa "#!" linya.
Ang Sinabi ni Env pinasimulan ang namespace mula sa kapaligiran ng programa. Halimbawa, kung ang halaga
ng variable ng kapaligiran LOGNAME ay bobo, kung gayon ${Env::LOGNAME} ay i-instantiate
na may halagang iyon. Tahimik na binabalewala ang mga pangalan ng variable na may syntactically invalid.
nota
Mga direktiba sa pagsasaayos at ang Conf Ang variable namespace ay magagamit lamang kung a
ang configuration file ay pinoproseso (hal., sa pamamagitan ng pagbibigay ng -uj flag ng command line). Ito ay
kaugnay, halimbawa, kung ang http()[5] function ay tinatawag gamit ang https scheme
dahil ang tamang operasyon ay mangangailangan ng SSL_PROG[6] direktiba na i-configure. Tingnan mo
dacs.conf(5)[7].
Opsyon
Kung ang isang expression o file ay hindi pa natukoy, ang isang filename ay maaaring lumitaw bilang ang huli
argumento. Kung filename ay "-", ang karaniwang input ay nabasa.
Ginoo
I-print ang impormasyon sa pag-debug sa stderr.
-e ipahayag
Nasusuri ang ibinigay na expression.
-h
-tulong
Magpakita ng mensahe ng tulong at lumabas.
-n
Huwag suriin ang anumang mga expression, tingnan lamang para sa mga error sa syntax.
-p
I-print ang huling resulta sa karaniwang output, maliban kung ito ay pinigilan ng -q or
-n. Kung wala ang flag na ito, ang resulta ay kailangang maging output ng programa.
-s
Kung ang isang expression ay sinusuri mula sa command line o isang file at ang
Ang resulta ng pagsusuri ay isang string o bstring, ang output ay napapalibutan ng mga quote
maliban kung tinukoy ang watawat na ito.
-pagsusulit
Ang input ay isang test case. Ang isang test case ay binubuo ng mga opsyon na sinusundan ng isang expression.
Maaaring mayroong zero o higit pang mga opsyon, isa sa bawat linya, na naka-embed sa loob ng // style na komento:
{ whitespace* "//" whitespace* opsyon-pangalan "" halaga ng opsyon dulo ng linya }*
Walang pinahihintulutang whitespace bago o pagkatapos ng ":". Bilang isang espesyal na kaso, ang mga linya na may
hindi pinapansin ang sumusunod na format:
whitespace* "///" .* end-of-line
Ang unang linyang hindi opsyon ay nagwawakas sa mga opsyon at ito ang unang linya ng
pagpapahayag na susuriin.
Narito ang isang halimbawa:
/// Subukan ang bitwise shift
// expect-exact:1024
1 << 10
Kinokontrol ng isang opsyon kung paano isasagawa ang pagsubok at nagbibigay ng inaasahang resulta:
asahan:regex
expect-regex:regex
Dapat tumugma ang string ng resulta regex. Ang dalawang pangalan ng opsyon na ito ay katumbas.
inaasahan-magkapareho:pisi
Dapat tumugma ang string ng resulta pisi saktong
inaasahan-eksakto:pisi
Dapat tumugma ang string ng resulta pisi eksakto, maliban sa C-style na character na iyon
constants (na sinusundan ng backslash) sa pisi ay interpolated.
expect-code:code
Dapat tumugma ang code ng resulta code, na 0 kung ang resulta ay Totoo, 1 kung ang resulta
is Huwad, at 2 kung may naganap na error. Kung hindi ibinigay ang opsyong ito, isang default na code ng
0 ay ipinapalagay.
uri ng inaasahan:uri
Dapat tumugma ang uri ng resulta uri, na maaaring integer, real, string,
bstring, literal, o undef.
inaasahan-flag:flag
Sa kasalukuyan, ang tanging kinikilalang mga halaga para sa flag ay rw_namespaces at
ro_namespaces. Ang una ay nagpapahintulot sa pagsubok na lumikha o magbago ng mga variable sa
Dacs, Args, O Sinabi ni Env namespace; bilang default, ang mga namespace na ito ay read-only. Ito
maaaring maging kapaki-pakinabang kapag sinusubukan mula sa()[8], halimbawa, dahil pinapayagan nito ang pagsubok
upang magtakda ng halaga para sa ${DACS::REMOTE_ADDR}. Ang default na gawi ay maaaring tahasan
pinili sa pamamagitan ng pagtukoy ng mga ro_namespaces.
ipakita ang resulta:{oo | hindi}
Ang resulta ay naka-print sa karaniwang output lamang kung ang opsyon na halaga ay oo.
Kung nabigo ang pagsubok, isang deskriptibong mensahe ang ipi-print sa karaniwang error. Ang
Ang katayuan sa paglabas ng programa ay magiging 0 kung matagumpay ang pagsubok, 1 kung hindi.
Dapat magtagumpay ang halimbawang ito nang hindi ipinapakita ang resulta:
// expect-exact:2
// expect-type:integer
/// show-result:oo
1 + 1
nota
Ang Dacs Kasama sa pamamahagi ang isang hanay ng mga kaso ng pagsubok sa direktoryo ng src/tests na
maaaring patakbuhin para sa pagsubok ng regression (gumawa ng "gumawa ng mga pagsubok" mula sa direktoryo ng src). Ang ilan
ng mga function na ibinigay ng dacs.exprs(5)[2] ay ginagamit din sa loob ng Dacs, Kaya
ito ay kritikal na ang lahat ng mga pagsubok ay matagumpay kahit para sa mga function na hindi ginagamit
mula sa antas ng gumagamit.
-x
Kung ito ang pinakaunang bandila ito ay nagpapahiwatig na dacsexpr ay isinasakatuparan bilang a
script sa pamamagitan ng "#!" ng system mekanismo. Ito ay maaaring maging kapaki-pakinabang kung ang programa ay
heuristic para sa pagtukoy na ito ay hindi tama. Ang huling argumento ay dapat na isang filename.
--
Ang argumentong ito ay tahasang minarkahan ang huling argumento ng bandila. Maaaring ang argumento ng filename
sundin.
HALIMBAWA
Sinusuri ng sumusunod na command ang expression na argumento (tandaan na ito ay isang solong argumento
sa utos) at ilalabas ang resulta sa stdout:
% dacsexpr -e "1+1"
2
% dacsexpr -e '${Env::USER}'
"bobo"
% dacsexpr -u example.com -e '"FEDERATION_NAME=" . ${Conf::FEDERATION_NAME}'
"FEDERATION_NAME=EXAMPLE"
% dacsexpr - abc <
? print("Ang unang arg ay \"\${Argv::1}\"")
? DITO
Ang unang arg ay "a"
% pusa ex
#!/usr/local/dacs/bin/dacsexpr
print("Ang Argv[2] ay ${Argv::2}");
% chmod 0755 hal
% ./ex foo bar baz
Ang Argv[2] ay bar
DIAGNOSTICS
Kung may naganap na error, ang isang mensahe ay maaaring isulat sa stderr, depende sa antas ng pag-log. Sa
pangkalahatan, ang programa ay lalabas sa 0 kung at kung maayos lang ang lahat. Kung isang command line
ang expression ay sinusuri, ang programa ay lalabas sa 0 kung ang expression ay sinusuri sa Totoo, 1 kung ito
sinusuri sa Huwad, at 2 kung may naganap na error. Kung ang isang tahasang tawag sa exit () ay ginawa at hindi
totoong error na kundisyon ang nangyari, pagkatapos ay lalabas ang program na may halaga ng argumento.
Gumamit ng dacsexpr online gamit ang mga serbisyo ng onworks.net