Pregunta

Intento reemplazar cadenas en el shell de Linux,

str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a

Se puede ejecutar cuando invoco el comando:./test.sh Pero si lo ejecuto en el modo nohup, usando el comando:nohup ./test.sh &

Dice eso ./test.sh:8:Mala sustitución

¿Qué pasa aquí?

Gracias

¿Fue útil?

Solución

ya que no tienes #!/bin/bash en la parte superior de su secuencia de comandos, el comando 'nohup' usa /bin/sh y el /bin/sh de su sistema no es BASH.La primera y tercera líneas donde asigna 'str' y 'a' no tienen la sintaxis Bourne correcta.

Dado que probablemente quieras usar BASH y no un shell que use una sintaxis estricta de Bourne, debes agregar un #!línea en la parte superior de su script como esta:

#!/bin/bash
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top