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 :

この場合、スクリプトは入力がファイルから来ているかどうかを知らないため、ユーザーと対話するようにメニューなどを印刷し続けます。

おすすめ記事