Sto avendo una variabile che mostra l'eco in questo modo
$ echo $var
129 148
Devo prendere solo 129 come output. Come dividerò 129 e 148?
Sto avendo una variabile che mostra l'eco in questo modo
$ echo $var
129 148
Devo prendere solo 129 come output. Come dividerò 129 e 148?
Risposte:
Oltre al suggerimento di Jasonwryan , puoi usare cut
:
echo $var | cut -d' ' -f1
Quanto sopra cut
è l' echo
output con un delimitatore di spazio ( -d ' '
) e genera il primo campo ( -f1
)
cut
è un'utilità standard. Il tuo script probabilmente ha un errore altrove. Più in generale, non dire mai "non funziona". Di 'sempre esattamente quale codice hai eseguito, esattamente cosa è successo e copia e incolla i messaggi di errore.
Un modo pulito per farlo è usare un array bash per dividere una stringa su spazi. Puoi dichiarare un array semplicemente usando le parentesi:
var="129 148 181"
vars=( $var )
echo "First word of var: '${vars[0]}'"
echo "Second word of var: '${vars[1]}'"
echo "Third word of var: '${vars[2]}'"
echo "Number of words in var: '${#vars[@]}'"
echo $SHELL
dovrebbe mostrare: /bin/bash
o simile.
zsh
; (
zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
echo "${var% *}" && echo "${var#* }"
...