Смена скрипта оболочки

nohup your-command-here &> output.txt &
tail -f output.txt
0
08.03.2018, 07:02
1 ответ

Su script es claramente un bashscript, pero lo está ejecutando usando sh.

En lugar de usar explícitamente shpara iniciar el script,

  1. Utilice basho
  2. Haga que el script sea ejecutable y agregue una línea#!-apropiada en la primera línea que apunte al intérprete bash, y ejecute el script con ./cli-unit.sh.

No se puede esperar que el shell shcomprendabash-la sintaxis específica del shell.


Tengo un par de problemas adicionales con algunas de las cosas en la secuencia de comandos que muestra:

  • Use nombres de variables de shell en minúsculas para que no entren en conflicto accidentalmente con las variables de entorno del sistema. En el código, establece SHELL, que generalmente es la ruta al intérprete de shell actual.
  • No use diffpara hacer una comparación de cadenas. Solo haz if [ "$variable1" != "$variable2" ]para probar la desigualdad.
  • Use printfen lugar de echopara generar datos variables (consulte " ¿Por qué printf es mejor que echo? " ).

Dirigiéndose aldiff:

if [ "$FOUND" != "$EXPECTED" ]; then
    # code as before
    return 1
fi
# code as before
return 0

Dentro de la rama if, aún puede usar diffpara mostrar la diferencia (, especialmente si otro script o usuario está esperando ese tipo de resultado de este guión ). Otra opción sería hacer

if [ "$FOUND" != "$EXPECTED" ]; then
    # $FOUND is different from $EXPECTED
    printf 'FAIL (%s): Found: %s\n' "$TITLE" "$FOUND"
    printf 'FAIL (%s): Expected: %s\n' "$TITLE" "$EXPECTED"
    # other code here
 fi
 # rest of script

o algo similar.

1
28.01.2020, 02:43

Теги

Похожие вопросы