Como executar o bash no CYGWIN

1

Eu criei o seguinte arquivo com o nome test.sh

#!/bin/bash

name = "Elvin John Paul"
echo $name
echo ${name#* }
echo ${name##* }
echo ${name% *}
echo ${name%% *}

e estou recebendo algum erro como abaixo.

alguém pode me dizer o que estou fazendo errado?

    
por Elvin 12.12.2013 / 07:59

2 respostas

2

Há duas coisas erradas:

  • Você não pode usar espaços ao redor do operador de atribuição. Como seu script atualmente é, o bash interpreta a linha como "executar name com os argumentos = e Elvin John Paul ". A linha deve se parecer com o seguinte:
name="Elvin John Paul"
  • Você tem finais de linha no estilo do Windows (CRLF em vez de apenas LF), o que resulta no erro sobre $'\r' . Em versões recentes do Cygwin, você pode usar set -o igncr para ignorar retornos de carro como parte de um CR LF, ou pode corrigir isso com sed da seguinte forma:
sed 's/\r$//' file > file2
    
por 12.12.2013 / 08:02
1

Por favor, remova o espaço em ambos os lados do símbolo = . Ao contrário de muitas outras linguagens de programação, esse espaço em torno do operador de atribuição é importante no Bash e em outros scripts de shell.

O código correto deve ser:

name="Elvin John Paul"
    
por 12.12.2013 / 08:02

Tags