comportamiento diferente cuando se ejecuta en modo nohup (shell de Linux)
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
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