스크립트 내에서 Bash 실행 스크립트로 인해 에코 및 읽기 문제 발생 [닫기]

스크립트 내에서 Bash 실행 스크립트로 인해 에코 및 읽기 문제 발생 [닫기]

아래 첨자에서 실행되는 스크립트에 설명할 수 없는 문제가 있는 것 같습니다. 아직 해결책을 찾지 못해서 도움을 드리고자 노력하겠습니다.

문제: 스크립트 내에서 스크립트를 실행할 때 기본 셸에서 스크립트를 실행할 때 발생하지 않는 특정 결함이 발생합니다.

# ./user

발생하는 문제는 \n 및 "-e", "-n"이 지정되거나 아무 것도 지정되지 않은 경우에도 모든 "echo" 문이 동일한 줄에 인쇄된다는 것입니다. 또 다른 주요 문제는 코드의 "읽기" 문이 디버깅된 코드에서 첨자 내에서 마지막으로 실행되는 것 중 하나인 경우 실제로 다른 모든 것보다 먼저 실행된다는 것입니다.

아래는 메인 스크립트에서 실행되는 코드입니다.

    #!/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

이러한 스크립트는 기본 스크립트의 행을 통해 호출됩니다.

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

'$uhu_sepcommand'는 매개변수가 뒤에 오는 스크립트 파일입니다.

그 부분

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

두 "echo" 문은 한 줄에 나타나고 "read" 문은 다른 모든 문보다 먼저 실행되는 것처럼 보입니다.

오류는 기본 스크립트 내에서 스크립트를 실행할 때만 발생합니다.

GNU bash 버전 4.2.37(1) 릴리스(i486-pc-linux-gnu) 사용

데비안 GNU/리눅스 7.7

편집 #1

Giles의 의견은 실제로 내 질문에 대한 답변이었습니다. 첨자는 모두 함께 누적되어 "블록"으로 출력됩니다. 명확히 말하면 출력이 작성된 내용과 일치하지 않고 부정확하다는 것이 결함입니다. 변화

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

도착하다

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

문제를 해결했습니다.

관련 정보