Cross-Platform alternativa alla lunghezza expr

0

Durante l'esecuzione di alcuni script BASH che avevo nella mia macchina Linux ho notato che expr length fornisce un errore di sintassi.

Le pagine del manuale non sembrano includere alcuna informazione sull'operatore di lunghezza. Manca in Mac OS X?

Quale altra alternativa multipiattaforma posso usare?

    
posta jviotti 28.10.2013 - 14:50
fonte

2 risposte

3

Invece di expr length 'keyword' puoi usare awk. Un esempio sarebbe simile a questo echo 'keyword' | awk '{ print length }'

bounty:~ napcae$ echo 'keyword' | awk '{ print length }'  
7
    
risposta data 28.10.2013 - 15:02
fonte
0

Potresti condividere la parte dello script che non funziona su Mac OS X? expr in generale aderisce a IEEE Std 1003.1-2008 (POSIX.1) ed è disponibile su tutti i sistemi Unix con la stessa semantica.

Se condividi qualche altra informazione riguardante il tuo script bash, sono certo che possiamo aiutarti. Il tuo esempio pubblicato di expr length , sebbene sia di per sé abbastanza inutile, funziona perfettamente bene nella mia shell Mavericks di Mac OS X:

~$ expr length
length

Non sei sicuro di ciò che hai cercato di ottenere, ma potrei immaginare che stavi cercando di ottenere la lunghezza di una stringa?

~$ a="non sequitur"
~$ expr \( "X$a" : ".*" \) - 1
12
~$ echo ${#a}
12

Per quanto riguarda la multipiattaforma, dipende molto da ciò che stai cercando di realizzare con il tuo script bash. Bash di per sé è piuttosto multipiattaforma.

    
risposta data 28.10.2013 - 15:08
fonte

Leggi altre domande sui tag