2009-07-09 9 views
1

Comment puis-je valider que le LOGNAME est présent dans un script bashBash Script - validation logname

if [`logname`]; then 
    echo -e \\t "-- Logname : `logname`" >> $normal_output_filename 
fi 

Le me donne au-dessus d'une ligne d'erreur 76: [logname]: command not found

+0

Peut-être ajouter des numéros de ligne la prochaine fois si vous vous référez à un numéro de ligne spécifique plus tard? TIA –

+0

Les autres lignes ne sont pas importantes Je viens de copier et coller l'erreur qui s'est produite pour avoir le numéro de ligne. –

Répondre

3

Peut-être essayer:

if [ -e /bin/logname ]; then 
    LOGNAME=`logname` 
    echo -e \\t "-- Logname : ${LOGNAME}" >> $normal_output_filename 
fi 

En fait, au lieu d'utiliser backtics il est préférable d'utiliser la substitution de commande, à savoir:

LOGNAME=$(logname) 

En utilisant cette syntaxe vous permet de facilement les substitutions de commandes de nid sans avoir à se soucier à propos des couches de barres obliques inverses, ce qui est le cas lors de l'utilisation de l'ancienne syntaxe backtic.

HTH

acclamations,

+0

Cela fonctionne parfaitement merci. –

1

Lorsque en utilisant les backticks comme ceci:

`logname` 

vous exécutez la commande logname. Je suppose que ce n'est pas prévu, n'est-ce pas?

Jetez un oeil à command substitution in Bash Beginners Guide.

+0

si [nom_journal]; alors N'évalue pas vrai ou faux - Je vais essayer les autres suggestions mais merci pour le lien, c'était très utile. –

0

Vous pouvez essayer d'utiliser le "qui" commande pour voir si la commande spécifiée existe:

if which logname >/dev/null 2>&1; then 
    #do something here 
fi 
0

OK. Une autre réponse Pas tout à fait sûr si vous convient, mais:

if test -n `logname`; then 
    echo -e \\t "-- Logname : `logname`" 
fi 

Je suppose que dans le if vous voulez vérifier si la commande retourne logname quoi que ce soit (quand il est pas?). Si c'est le cas, imprimez-le.

test -n vérifie si l'argument suivant est une chaîne vide.

+0

il imprime - nom de connexion: pas de nom de connexion –

3
if [ `logname` ]; then 
    echo -e \\t "-- Logname : `logname`" >> $normal_output_filename 
fi 

Attention à l'espace entre [et `.

Questions connexes