Bash 파일의 선택 루프에 대한 항목 제공

Bash 파일의 선택 루프에 대한 항목 제공

결과를 제공하기 위해 항목을 어떻게 제공할 수 있습니까? 터미널에서 코드를 실행하면 정상적으로 작동합니다. 코드는 다음과 같습니다.

PS3="Enter the space shuttle to get quick information : "
 
# set shuttle list
select shuttle in columbia endeavour challenger discovery atlantis enterprise pathfinder
do
    case $shuttle in
        columbia)
            echo "--------------"
            echo "Space Shuttle Columbia was the first spaceworthy space shuttle in NASA's orbital fleet."
            echo "--------------"
            ;;
        endeavour)
            echo "--------------"       
            echo "Space Shuttle Endeavour is one of three currently operational orbiters in the Space Shuttle." 
            echo "--------------"       
            ;;
        challenger) 
            echo "--------------"               
            echo "Space Shuttle Challenger was NASA's second Space Shuttle orbiter to be put into service."
            echo "--------------"                   
            ;;      
        discovery) 
            echo "--------------"       
            echo "Discovery became the third operational orbiter, and is now the oldest one in service."
            echo "--------------"                           
            ;;      
        atlantis)
            echo "--------------"       
            echo "Atlantis was the fourth operational shuttle built."
            echo "--------------"                           
            ;;
        enterprise)
            echo "--------------"       
            echo "Space Shuttle Enterprise was the first Space Shuttle orbiter."
            echo "--------------"                           
            ;;      
        pathfinder)
            echo "--------------"       
            echo "Space Shuttle Orbiter Pathfinder is a Space Shuttle simulator made of steel and wood."
            echo "--------------"                           
            ;;
        *)      
            echo "Error: Please try again (select 1..7)!"
            ;;      
    esac
done

하지만 jupyter 노트북에서 실행하려고 하면 작동하지 않습니다. 시도해 보았습니다(코드 자체도 시도해 보았습니다).

%%bash
cd /shellfilepath
bash file.sh

cd /shellfilepath
bash file.sh | 1

%%bash
cd /shellfilepath
bash file.sh | echo "1"

%%bash
cd /shellfilepath
if bash file.sh; then echo "1"

출력은 선택 사항(예: 1)을 입력하라는 질문에서 중지되고 쉘 파일은 선택 사항 1에 대한 출력을 표시해야 합니다. 내가 원하는 것은 쉘 파일이 1을 항목으로 읽는 것입니다.

답변1

스크립트는 표준 입력에서 읽습니다. 다른 프로세스의 출력이 스크립트의 표준 입력이 되도록 하려면 파이프를 사용해야 합니다.

$ echo 3 | bash file.sh
1) columbia    3) challenger  5) atlantis    7) pathfinder
2) endeavour   4) discovery   6) enterprise
Enter the space shuttle to get quick information : --------------
Space Shuttle Challenger was NASA's second Space Shuttle orbiter to be put into service.
--------------
Enter the space shuttle to get quick information :

이 경우 스크립트는 입력이 파일에서 오는지 알지 못하므로 마치 사용자와 상호 작용하는 것처럼 메뉴 등을 계속 인쇄합니다.

관련 정보