리눅스 셸에서 변수로 나눗셈을 어떻게 할 수 있습니까?
아래와 같이 셸에서 명령을 실행하면 다음과 같이 반환됩니다.expr: non-integer argument
오류입니다. 누가 설명 좀 해주시겠어요?
$ x=20
$ y=5
$ expr x / y
expr: non-integer argument
이 변수들은 셸 변수들입니다.다른 프로그램에 대한 매개 변수로 확장(즉, expr
), 당신은 사용해야 합니다.$
접두사:
expr $x / $y
그것이 불만을 제기한 이유는 당신이 알파벳 문자(즉, 정수가 아닌 문자)로 작업하려고 한다고 생각했기 때문입니다.
Bash 셸을 사용하는 경우 식 구문을 사용하여 동일한 결과를 얻을 수 있습니다.
echo $((x / y))
또는:
z=$((x / y))
echo $z
다른 스레드에서 이미 언급된 것 같습니다.
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 $* }"; }
렛을 사용하면 어떨까요? 훨씬 쉽다고 생각합니다.다음은 유용한 예입니다.
start=`date +%s`
# ... do something that takes a while ...
sleep 71
end=`date +%s`
let deltatime=end-start
let hours=deltatime/3600
let minutes=(deltatime/60)%60
let seconds=deltatime%60
printf "Time spent: %d:%02d:%02d\n" $hours $minutes $seconds
또 다른 간단한 예 - 1970년 이후의 일 수 계산:
let days=$(date +%s)/86400
Bash 변수를 참조하려면 매개 변수 확장이 필요함
대부분의 Linux 배포에서 기본 셸은 Bash입니다.Bash에서 변수는 매개 변수 확장에 달러 기호 접두사를 사용해야 합니다.예:
x=20
y=5
expr $x / $y
물론, Bash에는 산술 연산자와 특별한 산술 확장 구문도 있으므로 expr 바이너리를 별도의 프로세스로 호출할 필요가 없습니다.셸이 다음과 같은 모든 작업을 수행하도록 할 수 있습니다.
x=20; y=5
echo $((x / y))
소수점 뒤의 숫자를 얻으려면 다음을 수행합니다.
read num1 num2
div=`echo $num1 / $num2 | bc -l`
echo $div
가령
x=50
y=5
그리고나서
z=$((x/y))
제대로 작동합니다. 그러나 대/소문자를 사용하려면 /operator를 사용하면 해결할 수 없습니다. 그런 경우에는 디바이드나 디바이드 같은 간단한 문자열을 사용합니다.코드 참조
언급URL : https://stackoverflow.com/questions/18093871/how-can-i-do-division-with-variables-in-a-linux-shell
'programing' 카테고리의 다른 글
UI에서 제스처 탭을 호출하는 방법 프로그래밍 방식으로 신속하게 보기 (0) | 2023.05.21 |
---|---|
Git 상태는 내용이 동일하더라도 파일이 변경된 것으로 표시됩니다. (0) | 2023.05.21 |
도커가 postgresql이 실행될 때까지 기다립니다. (0) | 2023.05.21 |
iOS 8 iPad에서 UIAactivityView 컨트롤러 충돌 (0) | 2023.05.21 |
분기 기준 변경 (0) | 2023.05.21 |