Você pode usar o arquivo set
:
#!/bin/bash
set -- "bar"
echo
Fonte e mais sobre: Altere um argumento de linha de comando - bash .
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.
Você pode usar o arquivo set
:
#!/bin/bash
set -- "bar"
echo
Fonte e mais sobre: Altere um argumento de linha de comando - bash .
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";
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
Tags command-line bash