2013-01-08 3 views
0

J'écris un script shell qui crée une base de données et stocke des valeurs dans des clés dans un fichier database.file.Scripting shell et paramètre -e

J'ai eu un test qui a attiré mon attention et je me demande pourquoi cela se passe.

./shellscript put key -e 

Le comportement attendu créerait un fichier:

key <-> -e 

Pour une raison quelconque mon script shell ne peut même pas attraper le « -e » et même lors de l'impression 1 $, passant -e comme premier paramètre .

+0

Etes-vous sur Linux? Le paramètre apparaît-il si vous définissez la variable d'environnement POSIXLY_CORRECT sur 1? Si oui, il y a une explication ... –

+0

Salut, oui je suis sur linux et j'ai testé avec POSIXLY_CORRECT mis à 1 mais rien n'a changé. – cp151

+1

'clé <-> -e' est le contenu du fichier, non? La façon dont votre question est formulée, il semble que ce soit le nom du fichier, ce qui serait légal mais très étrange. –

Répondre

0

Laissez-moi deviner. Utilisez-vous "echo" dans votre script shell pour imprimer les arguments de la ligne de commande? Si oui: Remplacer tous les

echo foobar 

par

printf '%s\n' foobar 

Le problème disparaît maintenant? (En fonction de votre version "echo", il interprète -e et/ou -n comme des options, plutôt que comme des arguments.)