コマンドラインから入力を読む

コマンドラインから入力を読む

私はコマンドプロンプト自体からユーザー入力を受け入れるために「コマンドを読む」を使用しようとしましたが、スクリプトは進まないようです。

echo "Do you want to continue?(yes/no)"
read -p $1
if [ "$1" == "yes" ]
then
sleep 5s
echo ""
echo " move ahead"
else
    echo ""
    echo "Skipping The Step.."
    echo ""
sleep 5s
fi

こんなスクリプトを実行したいです..

sh script.sh yes
sh script.sh no  

上記のスクリプトに-pを追加しましたが、すべてが正しく機能しているようです。これが私の本当の質問です。 script.shを呼び出す別のスクリプトtest.shがあります。私が書く方法はこんな感じです

cat  test.sh yes
#!/bin/bash
echo "execute the below script"
sh script.sh $1



sh test.sh yes  

この方法は、スクリプトがデフォルトの「いいえ」を選択して続行するため、機能しません。どんなアイデアでも可能です。

答え1

$1、… - 以下を除いて、類似または他の方法で割り当て$2られないコマンドライン位置引数。read [-p] $1

set -- firsr_arg second_arg …

あなたの場合、パラメータが存在するかどうかをテストしてからテストできます。

while [ -z "$REPLY" ] ; do
    if [ -z "$1" ] ; then
         read -p "Do you want to continue?(yes/no) "
    else
         REPLY=$1
         set --
    fi
    case $REPLY in
        [Yy]es) sleep 5s
                echo -e "\n move ahead" ;;
         [Nn]o) echo -e "\nSkipping The Step..\n"
                sleep 5s ;;
             *) echo "Wrong answer. Print 'yes' or 'no'" 
                unset REPLY ;;
    esac
done

関連情報