2017-05-15 2 views
-4

안녕하세요,이 복제본이 될지 모르겠지만 정말이 코드 조각에서 오류가 표시되지 않습니다. 그때 나는 성명서에 오류를 주었고 오류가 없다고 생각합니다. 코드가 끊기는 두 줄에 주석을 달았습니다. 다음은 코드입니다 :if 문 셸 스크립트 오류

#!/bin/bash 
echo -n "Enter first value:" 
read firstvar 
echo -n "Enter second value:" 
read secondvar 
echo -n "Enter last value:" 
read compvar 
echo -n "Enter operation:" 
read ops 
counter=0 
result=0 
while [ $result -eq $compvar ] 
do 
if [ $ops -eq "+" ] 
then result = $((firstvar+secondvar)) 
elif [ $ops -eq "-" ] 
then result = $((firstvar-secondvar)) 
#elif[ $ops -eq "*" ] 
#then result = $((firstvar\*secondvar)) 
#elif[ $ops -eq "/" ] 
#then result = $((firstvar/secondvar)) 
else 
echo "Input valid operation !!!" 
fi 
(($counter++)) 
done 
+1

정확한 오류 메시지와 오류의 위치를 ​​말하지 않고 "오류가 있습니다"라고 말하면 의사에게 가서 어디서 어떻게 상처를 입지 않고 "어딘가에 아파요"라고 말하는 것과 같습니다. – user1934428

+1

게시하기 전에 [shellcheck] (http://www.shellcheck.net/)을 사용하십시오. – 123

+0

예 감사합니다. 제 실수를 발견했습니다. 귀찮게해서 미안해. –

답변

0

오 촬영, 나는 지체 해요. "elif"와 "["사이의 공백을 놓쳤습니다.

+0

더 많은 문제가 있습니다. – chepner

0

코드를 읽기 쉽게 들여 쓰기하고 들여 쓰기하는 방법을 배워야합니다.

#!/bin/bash 

echo -n "Enter first value:"; read firstvar 
echo -n "Enter second value:"; read secondvar 
echo -n "Enter last value:"; read compvar 
echo -n "Enter operation:"; read ops 

counter=0; result=0  #initialize variables 
while [ $result -eq $compvar ]; do 
    if [ $ops = "+" ]; then 
     result = $((firstvar+secondvar)) 
    elif [ $ops = "-" ]; then 
     result=$((firstvar-secondvar))  
    else 
     echo "Input valid operation !!!" 
    fi 
    ((++counter)) 
done 

글쓰기 코드는 문학 작품과 같습니다. 독자가 쉽게 읽을 수 있도록하기위한 양식이 있습니다 (나중에 6 개월 후에도 가능). 위의 코드는 혼란스럽고 나중에 엉덩이에 당신을 물 것입니다. 에 의견을 추가하십시오.

while 루프는 무의미하고 아무것도 수행하지 않습니다. -eq는 적어도 -ne이어야합니다. 카운터는 발생할 수있는 문제를 피하기 위해 정수로 초기화 될 수 있지만 결코 사용되지는 않습니다.