Não está funcionando. eu já usei. diz comando não encontrado.
Surbhi
3
@surbhi O que diz comando não encontrado? cuté um utilitário padrão. Seu script provavelmente tem um erro em outro lugar. De um modo mais geral, nunca diga "não está funcionando". Sempre diga exatamente qual código você executou, exatamente o que aconteceu e copie e cole as mensagens de erro.
Gilles 'SO- stop be evil' '
Essa resposta deve ser aceita, pois é a maneira mais concisa e direta. Não funcionará em casos mais complicados do que o exemplo dado, é claro.
Dan Nguyen
9
Uma maneira elegante de fazer isso é usar uma matriz bash para dividir uma sequência em espaços. Você pode declarar uma matriz simplesmente usando colchetes:
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 "${var% *}" && echo "${var#* }"
...Respostas:
Além da sugestão de jasonwryan , você pode usar
cut
:O exemplo acima
cut
é aecho
saída com um delimitador de espaço (-d ' '
) e gera o primeiro campo (-f1
)fonte
cut
é um utilitário padrão. Seu script provavelmente tem um erro em outro lugar. De um modo mais geral, nunca diga "não está funcionando". Sempre diga exatamente qual código você executou, exatamente o que aconteceu e copie e cole as mensagens de erro.Uma maneira elegante de fazer isso é usar uma matriz bash para dividir uma sequência em espaços. Você pode declarar uma matriz simplesmente usando colchetes:
fonte
echo $SHELL
deve mostrar:/bin/bash
ou similar.zsh
; (zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};