não pode abrir o arquivo como primeiro argumento [duplicado]

0

Estou tentando executar um script como:

./script.sh file

mas estou recebendo (se eu usar um arquivo txt):

=:        cannot open '=' (No such file or directory)
test.txt: ASCII text
Second

Se eu usar um arquivo gz:

=:           cannot open '=' (No such file or directory)
test.txt.gz: gzip compressed data, was "test.txt", last modified: Wed Jul 20 09:17:58 2016, from Unix
Second

(Eu tenho o script e o arquivo no mesmo diretório)

script:

#!/bin/bash

file = $1

if [[ $file == *.gz ]];then

    echo "First"
else
    echo "Second"

fi
    
por George 20.07.2016 / 11:29

1 resposta

5
file = $1

executa o comando file com = como o primeiro argumento e o resultado do operador split + glob aplicado ao primeiro parâmetro do script como os argumentos restantes.

Atribuições variáveis em shells semelhantes a Bourne (como bash , ksh , zsh , ash / dash , yash ) estão com espaços não ao redor da = sign:

file=$1

file = $1 seria válido como uma atribuição em rc , es ou akanga shells. csh e tcsh têm outra sintaxe: set file = $1:q e fish usa set file $argv[1] .

    
por 20.07.2016 / 11:35