est-il possible de passer des arguments de ligne de commande au script shell en tant que paires de valeur de nom, quelque chose comme , puis dans mon script, obtenez la variable comme
Je sais que 1 $ .... Et ainsi de suite peut être utilisé pour obtenir des variables, mais ne sera pas une valeur de nom comme des paires. Même s'ils le sont, le développeur utilisant le script devra s'occuper de la déclaration de variables dans le même ordre. Je ne veux pas ça. P> p> $ Action CODE> et le processus? P>
5 Réponses :
dans la coquille de Bourne, il existe une option rarement utilisée ' -k code>' qui place automatiquement toutes les valeurs spécifiées sous forme
nom = valeur code> sur la ligne de commande dans l'environnement. . Bien sûr, la famille Bourne / Korn / Posix Shell (y compris Bash), faites aussi cela pour
nom = valeur code> avant le nom de la commande:
arg=name1=value1
echo $name1
eval $arg
echo $name1
J'ai essayé de trouver des informations pour passer des variables environnementales à des commandes telles que la commande nom = valeur code>. Cependant, je ne trouve aucune explication dans
homme bash code>. Y a-t-il une page d'homme en documentant cela?
Je viens de le trouver dans Man Bash Code>: L'environnement pour une simple commande ou une fonction simple peut être augmenté temporairement en le préfixant avec des affectations de paramètres, comme décrit ci-dessus dans les paramètres. Ces déclarations d'affectation affectent uniquement l'environnement observé par cette commande. I>
Plusieurs sections du manuel Bash discutent de l'environnement avant le nom de la commande. On est Extension de la commande simple . Une autre est la section sur environnement et qui fournit des pointeurs à < code> -k code> via L'ensemble construit -in .
env action=build module=core myscript You said you're using tcsh. For Bourne-based shells, you can drop the "env", though it's harmless to leave it there. Note that this applies to the shell from which you run the command, not to the shell used to implement myscript.If you specifically want the name=value pairs to follow the command name, you'll need to do some work inside myscript.
s'étendant sur la réponse de Jonathan, cela a fonctionné bien pour moi:
Ceci a fonctionné pour moi:
STEPS = ABC REPOSITORY_NAME = stackexchange
Merci. Y a-t-il un équivalent de fenêtres pour les scripts de lot?
Théoriquement, vous pouvez reproduire ce script dans Windows en utilisant ses propres commandes. Voici quelques liens avec des chauves-souris complexes Windows si vous avez besoin: - github.com/krichter722/squirrel-sql/blob/master/archive/... - github.com/apache/tomcat/tree/master/bin
C'est une vieille question, mais toujours valable
Je n'ai pas trouvé la solution Cookie Cut. J'ai combiné les réponses ci-dessus. Pour mes besoins, j'ai créé cette solution; Cela fonctionne même avec enregistrer ceci comme @ Exemple: Remarque, les arguments au script peuvent avoir un préfixe optionnel quelques cas d'utilisation intéressante pour ce script: p> blanc espace code> dans la valeur de l'argument.
argpars.sh code> p>
- code> p>
./argparse.sh --path="$(ls -1)"
./argparse.sh --path="$(ls -d -1 "$PWD"/**)"
Je pense que votre réponse est ici: Stackoverflow.com/questions/2642707/...
Oui, par opposition à la Bash Bashetin
getopts code>,
getopt code> fonctionne avec tculsh.
Je suppose que quelque chose comme ça est disponible uniquement pour Bash.Sorry, je n'ai pas spécifié, im utilisant tculsh.