안녕하세요. 저는 식사 가격, 세금, 팁, 총 결제액 등 3가지 매개변수를 반환하는 프로그램을 개발 중입니다. 코드를 사용하는 데 문제가 있습니다.

안녕하세요. 저는 식사 가격, 세금, 팁, 총 결제액 등 3가지 매개변수를 반환하는 프로그램을 개발 중입니다. 코드를 사용하는 데 문제가 있습니다.

이것은 쉘 검사 및 업데이트된 코드입니다. 어떤 도움이라도 정말 감사하겠습니다! 더 구체적으로 말하면 코드가 실행되지 않거나 실행되지만 오류 메시지가 반환되고 식사 가격으로 숫자를 입력할 수 없습니다. 코드를 실행하려고 할 때 나타나는 오류 메시지는 다음과 같습니다. stinput: 명령을 찾을 수 없음, 이어서 명령을 찾을 수 없음, 두 번 반복됨. 업데이트: 아래 사용자가 제안한 대로 코드를 시도했으므로 업데이트된 코드와 오류 메시지는 다음과 같습니다.

    #!/bin/bash
NumberofInputs="$1"
total=$(( $1 * $2))
total=$(("$total" / 100))
total=$(("$total" +  $3 + "$NumberofInputs"))
echo "The price of the meal is: $1"
echo "The tax for the meal is: $2"
echo "The tip for the meal is: $3"
echo "The total amount paid is: $total"
exit 1

업데이트: user000001 코드의 첫 번째 부분을 제거했을 때 다음 오류가 발생했습니다. bash: * : 구문 오류: 예상 피연산자(오류 표시 "* ") bash: "" / 100: 구문 오류: 예상 피연산자(오류 표시) for """ / 100") bash: "" ++ : 구문 오류: 예상 피연산자(오류 태그 """ ++ ") 하지만 user000001 코드의 첫 번째 부분을 유지하면 다음 오류 메시지가 나타납니다. echo 저는 죄송합니다. 잘못된 정보입니다. 매개변수를 3개만 입력하세요. : 명령어를 찾을수 없음

업데이트: 따옴표를 제거하고 모든 변수를 함께 공백으로 두는 답변을 찾았습니다. 모두의 도움에 감사드립니다!

답변1

Bash에서 산술을 수행하려면 이중 괄호가 필요하며 $1 $2위치 인수에도 마찬가지입니다.

내 생각엔 네가 원하는 것 같아

total=$(($1 * $2))

전체 스크립트는 다음과 같습니다

$ cat script.sh 
#!/bin/bash
if [[ $# != 3 ]]
then
   echo "Usage: $0 price tax tip" 1>&2
   exit 1
fi

tax=$(( $1 * $2 / 100 ))
total=$(( tax + $3 + $1 ))

echo "The price of the meal is:  $1"
echo "The tax for the meal is: $tax"
echo "The tip for the meal is: $3"
echo "The total amount paid is: $total"

$ ./script.sh 10 20 4
The price of the meal is:  10
The tax for the meal is: 2
The tip for the meal is: 4
The total amount paid is: 16

관련 정보