Executando {comando vs através do script bash} + saída redirecionada

0

Não tenho certeza se há um ou dois problemas aqui:

arquivo /usr/bin/line1

wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1

arquivo /usr/bin/line2

!#/usr/bin/bash
wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1

O comando wine funciona bem, mas quando eu executo /usr/bin/line1 , recebo:

: ambiguous redirect1: 1

E quando eu corro /usr/bin/line2 , obtenho:

wine: bad interpreter: No such file or directory

Como posso executar o comando através do script bash? O que está acontecendo aqui?

    
por aiao 08.08.2014 / 21:22

4 respostas

1

Para começar, você precisa de um shebang válido. Seu segundo arquivo quase tem um, mas o !# está errado. Segundo você precisa de um intérprete válido! Nenhum dos meus sistemas tem /usr/bin/bash , é apenas /bin/bash . Você pode até mesmo usar /bin/sh . É sempre tão leve.

Os seguintes itens devem funcionar:

#!/bin/sh
wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1
    
por Oli 10.08.2014 / 02:16
0

No primeiro arquivo, você pode redirecionar a saída usando apenas > /dev/null ou &> /dev/null , que irá redirecionar stdout e stderr , portanto, não há necessidade de 2>&1 .

No segundo arquivo, acredito que o interpretador correto é #!/bin/bash .

    
por dan08 08.08.2014 / 21:36
0

as alças de arquivo 1 e 2 (stdout & amp; stderr) podem ser fechadas pelo wine, porque não as usam e podem até liberar 0 (stdin) depois de estabelecer um manipulador de teclado. Além disso, isso seria mais justo para as janelas, já que todas as alças de arquivos estão disponíveis, como esperado em uma nova instância de programa.

    
por rhubarbdog 09.08.2014 / 12:52
0

Primeiro de tudo: Você está usando Wine que, nesse caso, pode precisar recriar algo que imita o ambiente de tempo de execução de um shell de comando do Windows (cmd.exe).

Como você não disse o que é drive_c/Program\ Files\ \(x86\)/LINE/Line.exe , não há como informar seus requisitos.

Agora, : ambiguous redirect1: 1 parece uma saída possível do Wine ou do cmd.exe.

Pode ser que você precise garantir que ONLY WINE seja afetado pelos redirecionamentos de estilo do Linux. Talvez você precise investigar o que o Wine espera e como proteger / separar seus parâmetros daqueles capturados pelo bash e vice-versa.

Coisas para experimentar:
Como funciona no prompt de comando do bash, tente source line2 para iniciantes.

Se isso funcionar, talvez tente uma variante como essa - de um script:

bash <<EOF
wine /home/aiao/.wine/drive_c/Program\ Files\ (x86)/LINE/Line.exe > /dev/null 2>&1
EOF

Ainda outra ...
start é uma ferramenta de linha de comando do Windows que aplica as mesmas tarefas que um clique duplo em, e. um link ou arquivo, então tente:

wine start /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe 

Nota: SEM o redirecionamento, se isso realmente funcionar, então - se ainda precisar, você pode tentar adicionar >/dev/null 2>&1 (ou o que for das outras respostas) para o Wine.

    
por Hannu 08.08.2014 / 22:23