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
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.