2 votes

Fournir des arguments de ligne de commande pour un exécutable à travers un Shell Shell.

Supposons que j'ai un exécutable xyz qui prend un nombre variable d'arguments de ligne de commande, et un wrapper Korn Shell Shell. xyz.ksh . Existe-t-il un moyen simple de passer tous les arguments Shell Shell tels quels à l'exécutable ?

11voto

MikeyB Points 38317

Vous devez utiliser :

"$@"

pour une expansion correcte des paramètres dans tous les cas. Ce comportement est le même dans bash et ksh.

La plupart du temps, $* ou $@ vous donneront ce que vous voulez. Cependant, ils développent les paramètres contenant des espaces. "$*" vous donne tous les paramètres réduits à un seul. "$@" vous donne ce qui a été réellement passé au wrapper script.

Voyez par vous-même (à nouveau, sous bash ou ksh) :

[tla ~]$ touch file1 file2 space\ file
[tla ~]$ ( test() { ls $*; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1  file2
[tla ~]$ ( test() { ls $@; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1  file2
[tla ~]$ ( test() { ls "$*"; }; test file1 file2 space\ file )
ls: cannot access file1 file2 space file: No such file or directory
[tla ~]$ ( test() { ls "$@"; }; test file1 file2 space\ file )
file1  file2  space file

1voto

Matt Simmons Points 20098

Je pense que vous cherchez la variable $* : http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#commandlineargs

C'est aussi connu sous le nom de $@ en bash, je crois.

0voto

user674887 Points 83

Oui. Utilisez la variable $*. Essayez ce script :

#!/bin/ksh

echo $*

et ensuite invoquer le script avec quelque chose comme :

scriptname a b c foobar

Votre résultat sera :

a b c foobar

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X