결과를 제공하기 위해 항목을 어떻게 제공할 수 있습니까? 터미널에서 코드를 실행하면 정상적으로 작동합니다. 코드는 다음과 같습니다.
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 :
이 경우 스크립트는 입력이 파일에서 오는지 알지 못하므로 마치 사용자와 상호 작용하는 것처럼 메뉴 등을 계속 인쇄합니다.