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