Bash: para linha única de loop

0
for i in {1..4}; do echo "Welcome $i";done

Eu quero

Welcome 1
Welcome 2
.
.

Em vez disso, obtenho

welcome {1..4}

Emulador de terminal para Android

    
por TheMaster 08.06.2017 / 06:39

4 respostas

3

Você não está executando bash ou está executando uma versão mais antiga de bash ou um shell que não entende expansões de chaves.

A explicação mais provável é que o emulador de terminal está rodando /bin/sh ou algum shell menor (que ainda é compatível com POSIX).

Em bash (e qualquer outro shell que suporte expansões de chaves), seu loop for explícito pode ser alterado em um loop implícito:

printf 'Welcome %d\n' {1..4}

ou

printf 'Welcome %d\n' $(seq 4)

se você não tiver expansão de contraventamento, mas tiver seq .

    
por 08.06.2017 / 09:53
3

Você está executando em / bin / sh (shell), não em / bin / bash.

$ /bin/sh -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome {1..4}

Agora tente com o bash:

$ /bin/bash -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome 1
Welcome 2
Welcome 3
Welcome 4

Se você preferir conchas, faça como Nikolas escreve:

for i in $(seq 4); do echo "Welcome $i" ; done

mas sugiro usar o Bash.

    
por 08.06.2017 / 11:04
1

Como Kusalananda disse, ou você não está executando o bash ou a versão não é muito recente . Eu testei o seguinte em versões mais antigas do bash (talvez antes de formar seu idioma?) E ele funciona com sh também:

for i in 'seq 1 4';do echo "Welcome $i";done

Isso deve fazer o truque.

    
por 08.06.2017 / 10:08
1

Se você usa este app: emulador de terminal do Android , " então é um emulador de terminal para se comunicar com o shell Android embutido ". Isto é, se você não instalou sua própria versão do bash manualmente (seu dispositivo deve ser rooteado para isso. Você estava rooteando seu dispositivo?), Então você tem o shell padrão do Android, não o bash. Portanto, você pode usar somente o conjunto de recursos do shell do Android e não pode usar recursos e sintaxe avançados do bash, por exemplo: {1..4} .

Algumas informações, que encontrei.

por 08.06.2017 / 11:03

Tags