명령줄에서 입력 읽기

명령줄에서 입력 읽기

명령 프롬프트 자체에서 사용자 입력을 받아들이기 위해 "명령 읽기"를 사용하려고 시도했지만 스크립트가 진행되지 않는 것 같습니다.

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

관련 정보