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