in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
Potrei basarmi su una lista di tutte quelle possibili. Dove potrei reperirle?
Moderatore: Staff
in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio

ulisse89 ha scritto:in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
Potrei basarmi su una lista di tutte quelle possibili. Dove potrei reperirle?

conraid ha scritto:in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio

echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9].*$"echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$"
ulisse89 ha scritto:Sì, potrei fare una variabile che rappresenta l'architettura.
Per la questione del numero di release che può essere maggiore di 9 ho notato che :
- Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9].*$"
matcha, anche se non dovrebbe.
Infatti la parte "-[0-9].*$" vuol dire che cerca dopo il trattino finale, una sola cifra da 0 a 9 e un set di caratteri di qualsiasi dimensione fino alla fine.
EDIT: Ho capito: al posto del punto che matcha tutti i caratteri comprese le cifre dovrei mettere un [a-z]. Verrebbe:
- Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$"
Giusto?


ulisse89 ha scritto:@d4z_c0nf :
Se metto ".*" allora matcha anche se viene passato il nome corto "qwerty-noarch-sl". Lo so che è surreale che un programma abbia "noarch" come parte del nome, ma è teoricamente possibile.
In questo caso il nome del pacchetto è passato in forma breve (cioè solo il nome del programma), mentre viene riconosciuto come nome completo.



echo nome_package | sed "s/\(-[^-]\{1,\}\)\{3\}$//"echo ntfs-3g-extreme-score-number-into-program-name-2009.4.4-i486-1|sed "s/\(-[^-]\{1,\}\)\{3\}$//"

. [ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
spina ha scritto:Ecco, albatrosla ha fatto quello che intendevo io. Secondo me è il miglior modo per ottenere quello che si vuole. Ovviamente se sed non modifica la stringa in input allora il nome non è completo.
Questo ad esempio dovrebbe andar bene:
- Codice: Seleziona tutto
[ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
Nota che in questo modo, se PACKAGE si riferisce ad un pacchetto, l'output di sed è proprio il nome del pacchetto, due piccioni con una fava,
Emanuele


[ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
#!/bin/bash
# by Spina
#
# $1 = Nome da controllare
_ARCH='..\?86 noarch'
for arch in $_ARCH
do
PGRNAME=$(echo $1 | sed "s/-[^-]*-${arch}[^-]*-[0-9][^-]*$//")
if [ $PGRNAME != $1 ]
then
echo "Nome completo per $PGRNAME"
exit
fi
done
echo "Nome corto"

Visitano il forum: Nessuno e 0 ospiti