Isso não é awk
code, isso é csh
code. Mude a she-bang para
#! /bin/csh -f
if($1 == "x") cat file
(onde -f
não é pegar um arquivo como argumento como em awk
, mas não ler o usuário ~/.cshrc
)
O código awk
para fazer a mesma coisa seria algo como:
#! /usr/bin/awk -f
BEGIN {
if (ARGV[1] == "x") exit(system("cat file"))
}
Se por versão tradicional do awk , você quer dizer as versões pré-1985 não-POSIX como /bin/awk
do Solaris, então isso não pode ser feito, já que elas não têm ARGV
e não pode se referir a seus argumentos (diferente de FILENAME
ao processar seus argumentos como arquivos de entrada). No Solaris, você deseja usar /usr/xpg4/bin/awk
para obter algo próximo a um awk
padrão. O texto da sua mensagem de erro sugere que você está usando mawk
, o que geralmente não é o que chamamos de versão tradicional de awk
e suporta essa sintaxe.
Agora, observe que system()
na verdade chamaria sh
para interpretar essa linha de comando cat file
shell, então você pode fazer a coisa toda em sh
(o que seria muito melhor do que csh
que realmente não deveria ser usado neste século):
#! /bin/sh -
if [ "$1" = x ]; then
cat file
fi
¹, também, alguns argumentos começando com -
seriam tomados como opção por awk
! Com o GNU awk
, você pode usar um #! /usr/bin/gawk -E
she-bang para resolver isso.