J'essaie d'obtenir une extension de fichier pour un fichier dans le script shell. Mais sans de la chance.
La commande que j'utilise est p> et p> mais les deux des commandes Impossible de mettre de la valeur dans la variable fichier_ext. Mais quand j'essaie p> Cela me donne le résultat souhaité. Je suis nouveau dans le script shell. Veuillez décrire la situation ce qui se passe. Et aussi comment dois-je le faire? P> Merci. P> P>
3 Réponses :
Vous devez faire attention lorsque vous déclarez des variables.
variable1="string" # assign a string value variable3=`command` # assign output from command variable2=$(command) # assign output from command
Merci bien interprété. :). J'ai eu ton point ne fera jamais cette erreur.
Les espaces font mal.
De toute façon, vous devriez faire: P>
file_ext=$(echo $filename |awk -F . '{if (NF>1) {print $NF}}')
Oui. L'idée était à la commande en $ (). Merci pour votre réponse.
Pour obtenir une extension de fichier, utilisez simplement la coque
$ filename="myfile.ext"
$ echo ${filename##*.}
ext
$ file_ext=${filename##*.} #put to variable
$ echo ${file_ext}
ext
Ouais mais pourquoi cela fonctionne-t-il? Quel est ce ## *. Code> vaudou?
lol @ okonomiyaki3000, Bash Scripting est surtout vaudou pour moi XD. Cela fonctionne car {var ## quelquepattern} code> est un paramètre. ## PiedPattern Code> supprime essentiellement le motif du Var, de sorte que tout retire jusqu'au point. Le seul gotcha avec c'est que si le motif n'est pas trouvé, toute la chaîne est renvoyée (qui peut être souhaitable ou non, dans mon cas, je voulais renvoyer une chaîne vide lorsqu'aucune extension n'existe). Voici un bon article sur la substitution des paramètres: Cyberciti.biz/tips/ Bash-shell-paramètre-substitution-2.html
Merci! Je n'ai jamais su cette fonctionnalité utile!
Il suffit de vérifier cela fonctionne également lorsque le nom de fichier contient plusieurs points. Par exemple. FileName = "myfile.log.gz" code> retournera gz code>, comme prévu.
Pour plus de références, tldp.org/ldp/abs/html est un très bon endroit!
Je me demande pourquoi le premier style fonctionne. Pourriez-vous s'il vous plaît expliquer?