2012-12-26 4 views
3

J'essaie simplement de supprimer un signe % d'une variable, afin d'effectuer des calculs mathématiques sur le résultat. J'ai essayé plusieurs choses, mais aucun d'entre eux semblent fonctionner:Supprimer un caractère de la chaîne

$ output="23%" 
# usep=$(echo $output | awk '{print $1}' | cut -d '%' -f 1) 
# usep=`echo $output | sed 's/\%//g` 
# usep=`echo $output | head -c 2` 

La usep variable contient encore le caractère %. Des idées?

+0

il semble que vous essayez simplement des commandes aléatoires sans comprendre ce que chaque commande fait. Lisez la page de man pour chacun afin que vous puissiez les comprendre, puis n'utilisez aucun d'entre eux mais voyez plutôt la réponse de Ruben. Aussi, compte tenu de ce que vous avez posté ci-dessus, je vous garantis que vous faites la mauvaise chose dans le reste de votre script par "calcul mathématique" alors postez-le si vous souhaitez de l'aide. –

Répondre

7

Vous pouvez utiliser la substitution de paramètres Posix:

$ output="23%" 
$ usep=${output%%\%} 
$ echo $usep 
23 
+0

Certainement la meilleure réponse. Pas besoin d'utiliser des outils externes. –

+0

@gniourf_gniourf Bash substitutions pour la vie! (: – Rubens

+1

FWIW - C'est la substitution de paramètres POSIX, tout shell compatible POSIX l'aura - par exemple, ksh l'a - voir: http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 –

2

Assigner output comme

output="23%" 

et vous avez manqué le deuxième ' dans

usep=`echo $output | sed 's/%//g'` 
2

Je ne sais pas pourquoi l'approche à l'aide cut didn Ne travaillez pas pour vous, mais en voici une qui w orks parfaitement pour moi:

#!/bin/bash 

output="23%" 
usep=`echo $output | cut -d '%' -f 1` 
echo $usep 
Questions connexes