J'ai le script suivant. C'est un cas de test simple où a
est n'importe quelle valeur de chaîne et b
est censé être un chemin.
#!/bin/bash
alias jo "\
echo "please enter values "\
read a \
read -e b \
echo "My values are $a and $b""
Cependant, chaque fois que j'essaie d'exécuter ./sample.sh, j'obtiens les erreurs suivantes:
./sample.sh: line 3: alias: jo: not found
./sample.sh: line 3: alias: echo please: not found
./sample.sh: line 3: alias: enter: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: read a read -e b echo My: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: are: not found
./sample.sh: line 3: alias: and: not found
./sample.sh: line 3: alias: : not found
et quand j'essaye source sample.sh
j'obtiens ce qui suit:
a: Undefined variable.
Mon objectif était d'en faire un alias afin que je puisse trouver ce script et simplement exécuter l'alias pour exécuter la ligne de commandes. Quelqu'un peut-il regarder cela et me faire savoir quelle est l'erreur?
command-line
bash
scripts
alias
Jovin Miranda
la source
la source
Réponses:
Vous avez quelques problèmes ici
contrairement à in
csh
, inbash
(et à d'autres coquilles de type Bourne), les alias sont attribués avec un=
signe, par exemplealias foo=bar
les guillemets ne peuvent pas être imbriqués comme ça; dans ce cas, vous pouvez utiliser des guillemets simples autour de l'alias et des guillemets doubles à l'intérieur
la barre oblique inverse
\
est un caractère de continuation de ligne : syntaxiquement, elle transforme votre commande en une seule ligne (l'opposé de ce que vous voulez)Donc
Test: d'abord nous source le fichier:
ensuite
Si vous souhaitez utiliser l'alias dans un script, n'oubliez pas que les alias ne sont activés que par défaut dans les shells interactifs: pour les activer dans un script, vous devrez ajouter
Indépendamment de tout ce qui précède, vous devriez envisager d'utiliser une fonction shell plutôt qu'un alias pour des choses comme celle-ci
la source
$a
et$b
seraient développées au moment de la définition, pas lorsque l'alias est exécuté.Habituez-vous à utiliser des fonctions dans le shell de type POSIX. Vous n'avez aucun des problèmes de citation:
la source