O script de execução de bash de dentro do script causa problemas de eco e leitura [closed]

2

Parece que estou tendo problemas inexplicáveis com scripts executados em um subscrito. Não consegui adquirir uma solução, por isso darei o que puder para me ajudar a resolvê-la.

Problema: quando um script é executado a partir de um script, ocorrem falhas específicas que não ocorrem quando o script é executado a partir do shell principal, por exemplo,

# ./user

As falhas que ocorrem são que todas as instruções 'echo' são impressas na mesma linha, mesmo que \ n com '-e', '-n' ou nada. A outra falha principal é que a instrução 'read' no código é executada antes de tudo, quando é uma das últimas coisas executadas no código de depuração, dentro do subscrito.

Abaixo está o código sendo executado a partir do script principal.

    #!/bin/bash

#Frame
. "/uhost/admin/uhost_files/UHU_FRAME.source"
. "/uhost/admin/uhost_files/UHU_DIR_EXECUTE.source"

arr_uhu_arg=("$@")
command_get="$1"

function Help () {
    echo -e -n "Allows creation, edition, and locking of user accounts stored on the UH2 system.\n"
    echo -e -n "Takes the following arguments: ${lblue} add lock del${nc}\n"
    echo -e -n "Can add, lock, and delete UNIX user accounts from the UH2 system.\n"
}

function Start () {
    if [[ " ${arr_uhu_arg[*]} " == *" add "* ]]; then
        echo "===== USER ADD ====="
        echo "Username: "
        read uhost_username
    fi
}

if [[ "$command_get" == "init_help" ]]; then
    Help # Runs Help function when used by the help command
else
    Start # Runs the main command's function
fi

Os scripts são chamados pela linha no script principal:

echo '/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"'

'$ uhu_sepcommand' é o arquivo de script, seguido pelos argumentos.

A parte

if [[ " ${arr_uhu_arg[*]} " == *" add "* ]]; then
        echo "===== USER ADD ====="
        echo "Username: "
        read uhost_username
    fi

As declarações 'echo' aparecem em uma linha, e a declaração 'read' parece ser executada antes de tudo.

Os problemas ocorrem apenas quando se executa o script a partir do script principal.

Usando o GNU bash, versão 4.2.37 (1) -release (i486-pc-linux-gnu)

Debian GNU / Linux 7.7

EDIT # 1

O comentário de Gilles na verdade responde ao meu problema. O índice estava sendo acumulado e enviado como um 'lump'. Para esclarecer, a falha foi saída inconsistente e incorreta para o que foi escrito. Mudando

echo '/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"'

para

/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"

resolve o problema.

    
por Kessie Herzog 01.01.2015 / 23:22

0 respostas