4로 나눌 수 있는 숫자를 인쇄하는 방법(while 루프) 또는 awk

4로 나눌 수 있는 숫자를 인쇄하는 방법(while 루프) 또는 awk

Linux에서 어려운 문제에 직면했습니다. 4로 나누어지는 숫자를 인쇄해야 합니다.

다음 코드는 짝수를 인쇄하는 데 도움이 되지만 4로 나눌 수는 없습니다.

echo 5 | awk -F, '$0%2{$0++}1'

산출:

6

이 문제를 해결하는 방법을 모르겠지만 while 루프를 사용하여 값을 4로 나눌 수 있을 때까지 초기 값을 추가/증가시킨 다음 사용할 수 있는 변수에 값을 삽입하면 됩니다.

예를 들어:

val=5
5/4=  1.25 not divisible

val=val+1
val=6
6/4=  1.5 not divisible

val=val+1
val=7
7/4=  1.75

val=val+1
val=8
8/4=2 is divisible

값이 4로 나누어지면 이 예의 값 8은 4로 나누어지는 답 대신 출력 변수에 에코됩니다.

답변1

그리고 awk:

echo 5 | awk '{$0=int($0/4+1)*4}1'

설명하다:

  • $0/4+1값이 나누어 4지고 결과가 증가합니다 1.
  • int(n)그런 다음 awks로 반올림됩니다.int().
  • n*44이제 우리는 나누어질 수 있는 다음으로 큰 숫자를 얻기 위해 그것을 곱하면 됩니다 4.
  • {...}1마지막 1것은 값을 인쇄합니다.

16그러면 값이 인쇄됩니다 12.


나눌 수 있을 때 값을 일정하게 유지하려면 4다음을 대신 사용하십시오 awk.

awk '{$0=int($0/4+.75)*4}1'

답변2

#!/bin/bash
i=5
while [ 1 ]
do
        if [ `echo $i%4 | bc` -eq 0 ]; then
                echo $i
                exit
        else
                i=`echo $i+1|bc`
        fi
done

이 스크립트를 사용해 보세요while 루프

관련 정보