Intenté el siguiente script pequeño y simple:
#!/bin/bash
$1="bar"
echo $1
Pero cuando ejecuto ./script foome 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
$xen su lugarEl uso
$1=barsustituirá 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
$1para este, enbashy otros shells,$1es el primer argumento que pasa a su script:Si ejecuta lo anterior como
foo.sh hello, se imprimiráhelloya que ese es el primer argumento. Además, se refiere a una variable comovary 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
$1para 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$.