Como alterar o valor de um argumento em um script?

7

Eu tentei o seguinte script simples:

#!/bin/bash
="bar"
echo 

Mas quando executo ./script foo , recebo um erro e o valor não é alterado:

/home/mika/script: line 2: foo=bar: command not found
foo

Eu sei que $ 1 é o primeiro argumento que você passa para o seu script. Mas mesmo assim eu quero mudar seu valor.

    
por user258266 30.03.2014 / 20:29

3 respostas

8

Você pode usar o arquivo set :

#!/bin/bash
set -- "bar"
echo 

Fonte e mais sobre: Altere um argumento de linha de comando - bash .

    
por Radu Rădeanu 30.03.2014 / 20:51
4

Você não pode alterar essas variáveis diretamente. Você poderia dizer:

x=
echo $x

Então você pode usar $x

Usar =bar substituirá imediatamente o primeiro parâmetro por , e você estará basicamente declarando "foo=bar" e será interpretado como um comando "foo", não uma variável "foo";

    
por Marty Fried 30.03.2014 / 20:54
2

Não use use para isso, em bash e outros shells, é o primeiro argumento que você passa para o seu script:

#!/bin/bash
echo 

Se você executar o acima como foo.sh hello , ele imprimirá hello , já que esse é o primeiro argumento. Além disso, você se refere a uma variável como var e aos conteúdos de uma variável como $var . Então, para obter o comportamento esperado, basta usar outro nome para sua variável e não usar $ :

#!/bin/bash
var="bar"
echo $var
    
por terdon 30.03.2014 / 20:37