Especificando um interpretador genérico para um programa como o esperado?

4

Eu estou escrevendo esperar script que pode ser usado em vários sistemas operacionais, mas o problema é

não posso usar #!/usr/bin/expect evreywhere, então tentei fazer

 #!'which expect'

no topo, mas falhou

[sesiv@itseelm-lx4151 ~]$ ./sendcommand
-bash: ./sendcommand: 'which: bad interpreter: No such file or directory

qualquer solução para isso.

    
por munish 24.04.2013 / 16:20

2 respostas

6

Um truque que funciona principalmente (para perl, python, php inteters e provavelmente outros):

#!/usr/bin/env expect

Acho que env está sempre em /usr/bin/ . Muitos intérpretes podem funcionar dessa maneira agora. Outros hacks costumavam existir, mas não eram compreensíveis, ou não eram tão portáteis assim.

    
por 24.04.2013 / 17:56
2

Sugiro

#!/bin/sh
expect_path="$(which expect)"
"$expect_path" "$0" "$@"

Espero que isso funcione; Eu não estou familiarizado com as diferenças entre bash e sh.

    
por 24.04.2013 / 17:10