Intenté el siguiente script pequeño y simple:
#!/bin/bash
$1="bar"
echo $1
Pero cuando ejecuto ./script foo
me sale un error y el valor no cambia:
/home/mika/script: line 2: foo=bar: command not found
foo
Sé que $ 1 es el primer argumento que pasa a su script. Pero incluso así quiero cambiar su valor.
command-line
bash
usuario258266
fuente
fuente
Respuestas:
Puedes usar el incorporado
set
:Fuente y más sobre: Cambiar un argumento de línea de comando - bash .
fuente
No puede cambiar esas variables directamente. Tu puedes decir:
Entonces puedes usar
$x
en su lugarEl uso
$1=bar
sustituirá de inmediato al primer parámetro$1
, y esencialmente está declarando"foo=bar"
, y se interpreta como un comando "foo", no una variable "foo";fuente
No use el uso
$1
para este, enbash
y otros shells,$1
es el primer argumento que pasa a su script:Si ejecuta lo anterior como
foo.sh hello
, se imprimiráhello
ya que ese es el primer argumento. Además, se refiere a una variable comovar
y al contenido de una variable como$var
. Entonces, para obtener el comportamiento que espera, simplemente use otro nombre para su variable y no use un$
:fuente
$1
para los valores que desea cambiar. De todos modos, siempre y cuando corrija el error de sintaxis, debería funcionar, su principal problema era que estaba usando el$
.$foo="bar"
que, eso no funciona, necesitafoo="bar"
sin el$
.