Esta é uma linha de shebang válida?

0

Eu tenho a seguinte pergunta sobre o UNIX:

What else is needed when the top line goes

#!\bin\awk -f
  to make it run as a command?

Estou pensando que, seja qual for o nome do script, ele precisa receber permissão usando o chmod para executá-lo.

    
por Fernando Martinez 05.10.2014 / 19:42

2 respostas

6

A primeira linha com o "#!" será um caminho completo para o programa a ser executado.

Os nomes de caminho no Linux têm a barra entre os diretórios.

ou seja:

#!/bin/awk -f

ou

#!/bin/bash

ou

#!/usr/bin/perl

O primeiro script seria executado no programa de script usando awk , o segundo usando bash , o terceiro usando perl .

Você também terá que tornar o arquivo executável com:

$ chmod +x myscript.sh
    
por 05.10.2014 / 19:59
5

#!\bin\awk -f é uma linha shebang válida, mas não é útil. Declara que o arquivo deve ser interpretado pelo programa chamado \bin\awk no diretório atual. Assim, para responder a questão literalmente, existem duas maneiras de executar esse arquivo como um comando:

  • Crie um arquivo chamado \bin\awk no diretório atual, presumivelmente copiando ou vinculando alguma versão do awk. Além disso, o script precisa ser executado como executável.

    ln -s /bin/awk '\bin\awk'
    chmod +x /path/to/script
    /path/to/script
    
  • Invoque o awk explicitamente.

    awk -f /path/to/script
    

Se a modificação do arquivo for permitida, a linha shebang deverá ser editada para fazer sentido: substituir as barras invertidas por barras. E tornar o arquivo executável (que é, sem dúvida, a resposta pretendida, mas apenas fazer isso não seria uma resposta correta).

    
por 05.10.2014 / 23:40

Tags