Il s'agit de la commande dacsexpr qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
dacsexpr- DACS shell et interprète du langage d'expression
SYNOPSIS
dacsexpr [-x] [options dacs[1]] [M] [-e expr] [-n] [-p] [-s] [-h | -Aide] [-tester]
[--] [nom de fichier] [argument-script...]
DESCRIPTION
Ce programme fait partie du DACS suite.
Notre dacsexpr l'utilitaire évalue DACS expressions (voir dacs.exprs(5)[2]). C'est souvent un
une aide utile lors de la composition ou du test d'expressions à utiliser dans les règles de contrôle d'accès, ou
lors du débogage des ACL et des directives de configuration. Bien qu'ils continuent d'être appelés
"expressions" pour des raisons historiques, il est devenu possible d'écrire de petits programmes, et
le langage peut également être utile en tant que langage de script simple indépendant du reste de
DACS.
Si une expression est fournie, elle est évaluée et le résultat est imprimé selon la norme
sortir. Au plus une expression peut être spécifiée. Si la -q drapeau est donné (l'un des
options dacs[1]), rien n'est imprimé, les erreurs d'évaluation d'expression sont supprimées et le
le programme se termine par un sortie statuts[3] ; sinon le résultat est écrit dans
la sortie standard. Si ni un -q indicateur n'est donné ni aucun indicateur qui contrôle la journalisation
niveau, le niveau de journalisation est défini pour avertir de l'annulation de la journalisation du fichier de configuration
directive de niveau ; ce comportement est généralement pratique.
Si aucune expression n'est fournie, le programme lit son entrée standard. Si l'entrée n'est pas
provenant d'un appareil de type terminal, le programme s'exécute en "mode batch" et l'invite est
supprimé; sinon, le programme s'exécute en "mode interactif". Lorsque vous y êtes invité
mode interactif, entrez vous aider à l'aide. Si la readline(3)[4] fonctionnalité était
configuré lors de la construction du programme, l'édition de la ligne de commande et l'historique sont disponibles dans
mode interactif.
Si le programme est exécuté via le "#!" du système mécanisme, une ou plusieurs ligne de commande
les arguments peuvent être donnés :
#!/usr/local/dacs/bin/dacsexpr -test
// attend-exact:17
${x} = 17 ;
De tels programmes utilisent toujours le fichier de script comme entrée, donc aucune expression ou autre fichier
peut être spécifié sur le "#!" ligne.
Notre Env namespace est initialisé à partir de l'environnement du programme. Par exemple, si la valeur
de la variable d'environnement NOM DU JOURNAL est bobo, alors ${Env::LOGNAME} sera instancié
avec cette valeur. Les noms de variables syntaxiquement invalides sont ignorés en silence.
Notes
Directives de configuration et les Conf l'espace de noms de variables ne sont disponibles que si un
fichier de configuration est traité (par exemple, en donnant le -uj indicateur de ligne de commande). C'est
pertinent, par exemple, si le http()La fonction [5] est appelée en utilisant le schéma https
car un bon fonctionnement nécessitera la SSL_PROG[6] directive à configurer. Voir
dacs.conf(5)[7].
OPTIONS
Si une expression ou un fichier n'a pas déjà été spécifié, un nom de fichier peut apparaître comme dernier
argument. Si nom de fichier est "-", l'entrée standard est lue.
M
Imprimez les informations de débogage sur stderr.
-e expr
L'expression donnée est évaluée.
-h
-Aide
Affichez un message d'aide et quittez.
-n
N'évaluez aucune expression, vérifiez uniquement les erreurs de syntaxe.
-p
Imprimer le résultat final sur la sortie standard, à moins qu'il n'ait été supprimé par -q or
-n. Sans ce drapeau, le résultat devrait être affiché par le programme.
-s
Si une seule expression est évaluée à partir de la ligne de commande ou d'un fichier et que le
le résultat de l'évaluation est une chaîne ou une chaîne b, la sortie sera entourée de guillemets
à moins que ce drapeau ne soit spécifié.
-tester
L'entrée est un cas de test. Un cas de test se compose d'options suivies d'une expression.
Il peut y avoir zéro ou plusieurs options, une par ligne, intégrées dans un // commentaire de style :
{ espace* "//" espace* nom-option ":" valeur d'option fin de ligne }*
Aucun espace n'est autorisé avant ou après le ":". Comme cas particulier, les lignes ayant le
format suivant sont ignorés :
espace* "///" .* fin de ligne
La première ligne non optionnelle termine les options et est la première ligne du
expression à évaluer.
Voici un exemple:
/// Test des décalages au niveau du bit
// attend-exact:1024
1 << 10
Une option contrôle la manière dont le test doit être effectué et donne le résultat attendu :
attendre:regex
expect-regex :regex
La chaîne de résultat doit correspondre regex. Ces deux noms d'options sont équivalents.
attendre-identique :un magnifique
La chaîne de résultat doit correspondre un magnifique exactement.
attendre-exact :un magnifique
La chaîne de résultat doit correspondre un magnifique exactement, sauf ce personnage de style C
constantes (précédées d'une barre oblique inverse) dans un magnifique sont interpolés.
attendre-code :code
Le code de résultat doit correspondre code, qui vaut 0 si le résultat est Vrai, 1 si le résultat
is Faux, et 2 si une erreur se produit. Si cette option n'est pas donnée, un code par défaut de
0 est supposé.
type-attente :type
Le type du résultat doit correspondre type, qui peut être entier, réel, chaîne,
bstring, littéral ou undef.
attendre-drapeaux :drapeaux
Actuellement, les seules valeurs reconnues pour drapeaux sont des espaces de noms rw et
ro_namespaces. Le premier permet au test de créer ou de modifier des variables dans le
DACS, Arg, ou Env espace de noms ; par défaut, ces espaces de noms sont en lecture seule. Cette
peut être utile pour tester de()[8], par exemple, car il permet le test
pour définir une valeur pour ${DACS::REMOTE_ADDR}. Le comportement par défaut peut être explicitement
sélectionné en spécifiant ro_namespaces.
show-result:{yes | non}
Le résultat est imprimé sur la sortie standard uniquement si la valeur de l'option est oui.
Si le test échoue, un message descriptif est imprimé à l'erreur standard. Les
l'état de sortie du programme sera 0 si le test a réussi, 1 sinon.
Cet exemple devrait réussir sans afficher le résultat :
// attend-exact:2
// type attendu : entier
/// afficher le résultat : oui
1 + 1
Notes
Notre DACS distribution inclut un ensemble de cas de test dans le répertoire src/tests qui
peut être exécuté pour des tests de régression (faites "faire des tests" à partir du répertoire src). Certains
des fonctions fournies par dacs.exprs(5)[2] sont également utilisés en interne par DACS, De sorte
il est essentiel que tous les tests réussissent même pour les fonctions qui ne sont pas utilisées
du niveau de l'utilisateur.
-x
S'il s'agit du tout premier drapeau, cela indique que dacsexpr est exécuté en tant que
script via le "#!" du système mécanisme. Cela peut être utile si le programme
heuristique pour déterminer cela est incorrect. Le dernier argument doit être un nom de fichier.
--
Cet argument marque explicitement le dernier argument flag. Un argument de nom de fichier peut
suivre.
EXEMPLES
La commande suivante évalue l'argument d'expression (notez qu'il s'agit d'un seul argument
à la commande) et renvoie le résultat à stdout :
% dacsexpr -e "1+1"
2
% dacsexpr -e '${Env::USER}'
"bobo"
% dacsexpr -u example.com -e '"FEDERATION_NAME=" . ${Conf::FEDERATION_NAME}'
"FEDERATION_NAME=EXEMPLE"
% dacsexpr - abc <
? print("Le premier argument est \"\${Argv::1}\"")
? ICI
Le premier argument est "a"
% chat ex
#!/usr/local/dacs/bin/dacsexpr
print("Argv[2] est ${Argv::2}");
% chmod 0755 ex
% ./ex foo bar baz
Argv[2] est une barre
DIAGNOSTIC
Si une erreur se produit, un message peut être écrit dans stderr, selon le niveau de journalisation. Dans
général, le programme quitte 0 si et seulement si tout allait bien. Si une ligne de commande
expression est évaluée, le programme quitte 0 si l'expression est évaluée à Vrai, 1 s'il
évalue à Faux, et 2 si une erreur se produit. Si un appel explicite à sortie() est fait et non
Une vraie condition d'erreur s'est produite, le programme se terminera avec la valeur de l'argument.
Utiliser dacsexpr en ligne en utilisant les services onworks.net