How can I do division with variables in a Linux shell? | 리눅스 쉘에서 변수로 나눗셈 하기

Q.

아래처럼 쉘에서 커맨드를 실행할 때, expr: non-integer argument 에러가 생겨요. 누가 설명해줄 수 있나요?

$ x=20
$ y=5
$ expr x / y
expr: non-integer argument

 

A1.

그 변수들은 쉘 변수들이에요. 다른 프로그램에 (예. expr 등) 인자로 보내기 위해서는 앞에 $를 달아줘야 해요.

expr $x / $y

에러가 생기는 이유는 문자에다(예. 숫자가 아님) 계산을 하려고 한다고 생각했기 때문이에요.

배시 쉘을 사용한다면, expression 문법을 사용해도 같은 결과를 얻을 수 있어요:

echo $((x / y))

또는:

z=$((x / y))
echo $z

 

A2.

다른 게시물에서 언급된 적이 있는 것 같지만:

calc(){ awk “BEGIN { print “$*” }”; }

그리고 간단하게 아래처럼 입력하세요:

calc 7.5/3.2
2.34375

당신의 경우에는 이렇게 하면 될 거에요:

x=20; y=3;
calc $x/$y

혹은 원한다면, 이것을 별도 스크립트로 만들고 $PATH에 추가하면 로컬 쉘에서 언제나 쓸 수 있어요:

#!/bin/bash
calc(){ awk “BEGIN { print $* }”; }

 

#.

첫 번째 답변은 직관적이고, 두 번째 답변은 완성도 있네요. 계산할 일이 많다면 두 번째 답변처럼 해두는 것이 깔끔하겠지만 쉘에 익숙하지 않은 사람은 헷갈릴 수 있겠어요.

 

원문.

https://stackoverflow.com/questions/18093871/how-can-i-do-division-with-variables-in-a-linux-shell

194 Comments

  1. Wow! This could be one particular of the most useful blogs We’ve ever arrive across on this subject. Basically Fantastic. I’m also an expert in this topic therefore I can understand your effort.