2010-11-27 23 views
0

Dites que j'ai la fonction shoutout dans mon fichier .profile. Lorsque j'exécute shoutout 'Hello', la fonction imprime Hello, qui correspond à la réponse attendue. Cependant, je voudrais pouvoir appeler simplement shoutout sans paramètres et faire imprimer la fonction Foobar.Comment spécifier un param par défaut dans unix?

Comment spécifier une valeur par défaut pour 1 $ avec ou sans variables? Merci!

shoutout() { 
    echo $1 
} 
+0

en raison de ho w vous utilisez la commande c'est vraiment une question shell ou bash, plutôt que ruby. –

Répondre

7
shoutout() { 
    echo ${1:-Foobar} 
} 

EDIT: Merci à @ephemient pour cette tid bits supplémentaire que je ne connaissais pas ...

Pour ne pas confondre un argument chaîne vide comme manquant l'argument, omettre le côlon (:):

shoutout() { 
    echo ${1-Foobar} 
} 

$ shoutout 
Foobar 
$ shoutout "" 

$ 
+0

Léger problème qui peut ou ne peut pas importer; 'shoutout ''' produit "Foobar" plutôt que "". –

+3

Pour prendre soin de ce cas, utilisez '$ {1-Foobar}' au lieu de '$ {1: -Foobar}'. – ephemient

+0

+1 @ ephemient! Vous apprenez quelque chose de nouveau chaque jour. –

0
shoutout() { 
    if [ $# -eq 0 ]; then 
     echo No arguments. 
    else 
     echo $1 
    fi 
}