아래 첨자에서 실행되는 스크립트에 설명할 수 없는 문제가 있는 것 같습니다. 아직 해결책을 찾지 못해서 도움을 드리고자 노력하겠습니다.
문제: 스크립트 내에서 스크립트를 실행할 때 기본 셸에서 스크립트를 실행할 때 발생하지 않는 특정 결함이 발생합니다.
# ./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"
문제를 해결했습니다.