Bonjour,
En supposant que l'utilisateur tape une commande.
read mot
$mot >> temp
Du coup lorsque l'utilisateur a bien tapé une commande par exemple "ls" je me retrouve logiquement avec la liste des fichiers et répertoire du répertoire courant dans le fichier temp, alors que j'aurai voulu uniquement qu'il y est marqué "ls" dans le fichier temp sans que se soit interprété si quelqu'un sait comment faire.
Merci
# Shell
Posté par gUI (Mastodon) . Évalué à 2. Dernière modification le 22 octobre 2018 à 19:15.
La règle de base du shell, c'est que le premier "terme" que tu tapes est une commande, et les autres "termes" sont les paramètres.
read mot
=> la commande c'estread
, et le paramètremot
$mot >> temp
=> la commande est$mot
Le shell va donc regarder ce que vaut cette variable pour savoir quelle commande exécuter. Si
$mot
vautls
, il est donc parfaitement normal qu'il t'exécute unls
.Toi ce que tu veux comme commande c'est tout simplement
echo
qui affiche (entre autre) le contenu d'une variable.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Shell
Posté par wismerhill . Évalué à 3.
Et tant qu'à faire, mettre ce $mot (et pas $ls 😉) entre guillemets doubles, pour que ça fonctionne quoi que tape l'utilisateur.
[^] # Re: Shell
Posté par gUI (Mastodon) . Évalué à 2. Dernière modification le 22 octobre 2018 à 19:17.
oui tu as raison. perso je préfère d'ailleurs les accolades.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Shell
Posté par gUI (Mastodon) . Évalué à 2.
pardon, c'est bien évidemment
$mot
qu'il faut lire dans les différents exemples :)En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Shell
Posté par wismerhill . Évalué à 8.
Non, ce n'est pas la même chose, la syntaxe ${…} permet de protéger le nom de la variable, par exemple si le caractère juste après serait pris lui-même comme faisant partie du nom de la variable, mais il faut quand même le protéger par des guillemets.
Exemple:
[^] # Re: Shell
Posté par gUI (Mastodon) . Évalué à 2. Dernière modification le 22 octobre 2018 à 22:10.
Merci !
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Shell
Posté par Matthieu Moy (site web personnel) . Évalué à 7.
Et re-tant qu'à faire, ne pas utiliser
echo
sur une donnée venant de l'utilisateur et qui pourrait commencer par-
. Pour être robuste, préférerprintf
:Mais je pinaille un peu là.
[^] # Re: Shell
Posté par wismerhill . Évalué à 6.
Certes, mais puisqu'on en est à pinailler, ton exemple n'est pas tout à fait équivalent, car echo termine (par défaut) par une retour à la ligne, contrairement à printf.
Donc il faut faire:
Allez, au suivant, il y a surement encore moyen de pinailler!
[^] # Commentaire supprimé
Posté par alpharitto . Évalué à -2. Dernière modification le 09 décembre 2018 à 10:58.
Ce commentaire a été supprimé par l’équipe de modération.
# echo
Posté par MicP . Évalué à 1. Dernière modification le 22 octobre 2018 à 19:16.
Bonjour
[^] # Commentaire supprimé
Posté par alpharitto . Évalué à 1. Dernière modification le 09 décembre 2018 à 11:01.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.