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